Hi,

I have a table ( MyISAM, MySQL 5.0.20, FreeBSD ) containing network traffic 
data :

record_time datetime  - time when recording was added
ip char(15) - ip that generated the traffic
type tinyint(3) - traffic type ( 1 - local, 2 - internet )
inbound int(10) - in bytes
outbound int(10) - out bytes

Records are inserted each 5 minutes through a cron script.
Currently there are 3,330,367 rows.

Primary index is defined on ( ip, type, record_time ), columns in that 
order.
Also there is an index defined only on record_time

Now for an example to get traffic for this month, I use :

SELECT `ip`,`type`,SUM(`inbound`) AS `in`, SUM(`outbound`) as `out`
FROM `accounting`
WHERE `record_time` BETWEEN 20060401000000 AND 20060413160000
GROUP BY `ip`,`type`

this query takes aprox 7 seconds

Using EXPLAIN gives :

select_type    table              type      possible_keys         key 
key_len      ref          rows                                  Extra
SIMPLE         accounting   range       record_time     record_time 
8         NULL     362410     Using where; Using temporary; Using filesort

If I remove the SUM functions I am getting also "Using index in group-by"
and the query takes only 0.25 sec

Is there anyway to optimize this query to get faster responses ?

Thanks,
-----------------------
Puiu Hrenciuc 



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to