私は遅いクエリを実行し、それぞれをプロパティ最適化するためにできることを行ってきました。私はこれに出くわしました。
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) を試しましたが、それでもテーブル全体のスキャンが実行されます。