您好我有这个查询
SELECT * FROM customers WHERE height > 180 AND height < 200
以下是应用explain
的结果:
mysql> explain SELECT * FROM customers WHERE height > 180 AND height < 200;
+----+-------------+-----------+------+---------------+------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+------+---------------+------+---------+------+-------+-------------+
| 1 | SIMPLE | customers | ALL | height | NULL | NULL | NULL | 10423 | Using where |
+----+-------------+-----------+------+---------------+------+---------+------+-------+-------------+
请注意,字段height
有一个索引没有被提取,不知怎的......
height
字段是整数。我不知道。我期待它被使用,而type
也是range
任何?
答案 0 :(得分:0)
问题在于指定的范围。显然太松了。在这种特殊情况下,Mysql更喜欢完全扫描而不是使用索引。如果我限制范围,或增加记录数量,则使用height
索引,搜索访问策略将根据手册变为range
。