これは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以外のすべての行が返されていますか?そうであれば、インデックスを使用する理由はほとんどありません。例えば、エンジンがインデックスを使用しないことを決定してもよい。行のnrはかなり低いです。 – nos