我一直在经历我的缓慢查询,并尽我所能来优化每个查询。我遇到了这个,我一直坚持下去。
EXPLAIN SELECT pID FROM ds_products WHERE pLevel >0
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ds_products ALL pLevel NULL NULL NULL 45939 Using where
我已编制索引pLevel [tinyint(1)]
,但查询未使用它并进行全表扫描。
以下是该表中每个 pLevel 值的行数:
pLevel count
0 34040
1 3078
2 7143
3 865
4 478
5 279
6 56
如果我对 pLevel 的特定值进行查询,它确实使用索引:
EXPLAIN SELECT pID FROM ds_products WHERE pLevel =6
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ds_products ref pLevel pLevel 1 const 1265
我已经尝试过 pLevel>=1 和 pLevel<=6... 但它仍然会进行全面扫描
我已经尝试过(pLevel=1 或 pLevel=2 或 pLevel=3 或 pLevel=4 或 pLevel=5 或 pLevel=6)......但它仍然会进行全表扫描。