Thank you for answering. I tried your suggestion and it's got fast, but still slow and could not get rid of "Using temporary; Using filesort".
I don't understand why this simple query is so slow... ------------------------------------------------------------------------------------------------------------ mysql> ALTER TABLE employees2skills ADD INDEX(co_id, mod_time); Query OK, 1000000 rows affected (24.75 sec) Records: 1000000 Duplicates: 0 Warnings: 0 mysql> analyze table employees2skills; +-----------------------+---------+----------+----------+ | Table | Op | Msg_type | Msg_text | +-----------------------+---------+----------+----------+ | test.employees2skills | analyze | status | OK | +-----------------------+---------+----------+----------+ 1 row in set (0.01 sec) mysql> show index from employees2skills; +------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | +------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | employees2skills | 0 | PRIMARY | 1 | emp_id | A | 1000638 | NULL | NULL | | BTREE | | | employees2skills | 0 | PRIMARY | 2 | skill_id | A | 1000638 | NULL | NULL | | BTREE | | | employees2skills | 1 | skill_id | 1 | skill_id | A | 18 | NULL | NULL | | BTREE | | | employees2skills | 1 | mod_time | 1 | mod_time | A | 18 | NULL | NULL | | BTREE | | | employees2skills | 1 | co_id | 1 | co_id | A | 18 | NULL | NULL | | BTREE | | | employees2skills | 1 | co_id | 2 | mod_time | A | 18 | NULL | NULL | | BTREE | | +------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 6 rows in set (0.00 sec) mysql> EXPLAIN SELECT * FROM employees2skills e2s INNER JOIN companies c ON c.id = e2s.co_id ORDER BY e2s.mod_time limit 5; +----+-------------+-------+-------+---------------+-------+---------+-----------+-------+----------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+-------+---------+-----------+-------+----------------------------------------------+ | 1 | SIMPLE | c | index | PRIMARY | name | 62 | NULL | 7 | Using index; Using temporary; Using filesort | | 1 | SIMPLE | e2s | ref | co_id | co_id | 4 | test.c.id | 55591 | Using index | +----+-------------+-------+-------+---------------+-------+---------+-----------+-------+----------------------------------------------+ 2 rows in set (0.00 sec) mysql> SELECT * FROM employees2skills e2s INNER JOIN companies c ON c.id = e2s.co_id ORDER BY e2s.mod_time limit 5; +--------+----------+-------+---------------------+----+-------+ | emp_id | skill_id | co_id | mod_time | id | name | +--------+----------+-------+---------------------+----+-------+ | 183 | 1 | 2 | 2007-03-03 17:59:35 | 2 | Apple | | 184 | 1 | 2 | 2007-03-03 17:59:35 | 2 | Apple | | 185 | 1 | 2 | 2007-03-03 17:59:35 | 2 | Apple | | 186 | 1 | 2 | 2007-03-03 17:59:35 | 2 | Apple | | 187 | 1 | 2 | 2007-03-03 17:59:35 | 2 | Apple | +--------+----------+-------+---------------------+----+-------+ 5 rows in set (1.70 sec) On 3/3/07, Filip Krejci <[EMAIL PROTECTED]> wrote:
Hi, if your selectivity is very low, try to use multiple index on e2s(co_id, mod_time) and force this index in query. Filip > > employees2skills: > INSERT INTO employees2skills SELECT id, 1, 2, NOW() FROM employees; > # Yes, 1000000 have same skill_id, co_id, and even mod_time. > # selectivity is extreamly low > -- Filip Krejci <[EMAIL PROTECTED]> Vini, vidi, Linux! -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]