Hi! I have this table :
mysql> desc cpu; +-----------------+----------------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+----------------------+------+-----+---------------------+-------+ | timecode | datetime | | MUL | 0000-00-00 00:00:00 | | | systemid | smallint(5) unsigned | | | 0 | | | usertime | float(3,1) | YES | | NULL | | | systemtime | float(3,1) | YES | | NULL | | | waittime | float(3,1) | YES | | NULL | | | idletime | float(3,1) | YES | | NULL | | | runqueue60 | float(4,2) | YES | | NULL | | | processes | smallint(5) unsigned | YES | | NULL | | | interrupts | float(6,1) | YES | | NULL | | | systemcalls | float(6,1) | YES | | NULL | | | contextswitches | float(6,1) | YES | | NULL | | +-----------------+----------------------+------+-----+---------------------+-------+ 11 rows in set (0.00 sec) With this index : mysql> show index from cpu; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality || Sub_part | Packed | Comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+---------+ | cpu | 1 | timecode | 1 | timecode | A | 4199933 || NULL | NULL | | | cpu | 1 | timecode | 2 | systemid | A | 4199933 || NULL | NULL | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+---------+ 2 rows in set (0.13 sec) ...and I execute a query like this (here with explain first) : mysql> explain SELECT substring_index(elisa.timecode,':',1), avg(elisa.usertime + elisa.systemtime) AS elisa, avg(asuncion10.usertime + asuncion10.systemtime) AS asuncion10, FROM cpu AS elisa, cpu AS asuncion10, cpu AS asuncion20 WHERE elisa.systemid='44' AND asuncion10.systemid='47' AND substring_index(elisa.timecode,':',1) = substring_index(asuncion10.timecode,':',1) AND elisa.timecode > now() - INTERVAL 7 DAY AND asuncion10.timecode > now() - INTERVAL 7 DAY GROUP BY substring_index(elisa.timecode,':',1) ORDER BY substring_index(elisa.timecode,':',1); +------------+-------+---------------+----------+---------+------+--------+-----------------------------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | | +------------+-------+---------------+----------+---------+------+--------+-----------------------------+ | elisa | range | timecode | timecode | 8 | NULL | 612892 | where |used; Using temporary | | asuncion10 | range | timecode | timecode | 8 | NULL | 612892 | where used | | +------------+-------+---------------+----------+---------+------+--------+-----------------------------+ 2 rows in set (0.02 sec) This query takes quite a long time to execute, and I'm sure it can be done more elegant and faster....just don't know how. Anyone ? It's MySQL 3.23.49 with InnoDB tables. /Jesper --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php