【发布时间】:2009-07-28 20:37:01
【问题描述】:
这是a previous question的后续。
如何优化此查询使其不执行全表扫描?
SELECT Employee.name FROM Employee WHERE Employee.id <> 1000;
.
explain SELECT Employee.name FROM Employee WHERE Employee.id <> 1000;
+----+-------------+-------------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | Employee | ALL | PRIMARY | NULL | NULL | NULL | 5000 | Using where |
+----+-------------+-------------+------+---------------+------+---------+------+------+-------------+
(Empoyee.id 是主键,以防不清楚。)
【问题讨论】:
-
确保 Employee.id 上有索引
-
您要返回除 1 之外的所有行吗?如果是这样,几乎没有任何理由使用任何索引。引擎可能会决定不使用索引,例如行数相当低。
标签: mysql performance indexing