Я просматриваю свои медленные запросы и делаю все возможное, чтобы оптимизировать их. Я столкнулся с этим, что я застрял.Оптимизация с учетом mySql Query
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 count
0 34040
1 3078
2 7143
3 865
4 478
5 279
6 56
если сделать запрос для определенного значения плевел, он использует индекс:
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) .... но он по-прежнему выполняет полное сканирование таблицы.
Можете ли вы показать нам свой 'CREATE TABLE' SQL? – Kamil
Какие другие значения (и их значения) для pLevel находятся вне диапазона 0-6? – Bohemian
Никаких других значений, просто: 0,1,2,3,4,5,6 –