EXPLAIN EXTENDED SELECT `board` . *
FROM `board`
WHERE `board`.`category_id` = '5'
AND `board`.`board_id` = '0'
AND `board`.`display` = '1'
ORDER BY `board`.`order` ASC
上述查询的输出是
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE board ref category_id_2 category_id_2 9 const,const,const 4 100.00 Using where
我对此有点困惑,因为我有一个索引,其中包含我使用的列,其顺序与查询中使用的顺序相同......:
category_id_2 BTREE No No
category_id 33 A
board_id 33 A
display 33 A
order 66 A
的输出EXPLAIN
有时可能会产生误导。
例如,filesort
与文件无关,using where
并不意味着您正在使用WHERE
条款,以及using index
可以显示在没有定义单个索引的表上。
Using where
只是意味着表上有一些限制子句(WHERE
or ON
),并且并非所有记录都会被返回。注意LIMIT
不算作限制性子句(尽管可以算作)。
Using index
表示所有信息都从索引返回,而不查找表中的记录。仅当查询所需的所有字段都被索引覆盖时,这才有可能。
既然你选择了*
, 这是不可能的。除以下字段外的字段category_id
, board_id
, display
and order
索引未涵盖,应查找。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)