оптимизация запроса с between

sunyang

Новичок
будут ли использоваться индексы при использовании вот такого запроса:

таблица: product
PHP:
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL DEFAULT '',
`price` float NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `price` (`price`)
запрос:
PHP:
 explain SELECT * FROM product WHERE price BETWEEN 1000 AND 3000
выдает:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE product ALL price NULL NULL NULL 510 Using where

key: NULL

Вообще реально как-то заюзать индекс price при выборке продуктов в диапазоне цен?
Или быстрее будет работать выбрать все продукты без условия и перебрать массив и отфильтровать подходящие под диапазон цен?
 

Gas

может по одной?
база решила что быстрее будет всё считать и не использовать индекс
запрос тормозит? уверен что нет, станет больше данных, начнёт индекс использовать.

можешь для очистки совести сделать OPTIMIZE TABLE product и ещё раз посмотреть explain.
 

sunyang

Новичок
так там уже больше 7000 записей. Странно, не думал, что база может сначала не юзать индекс, а потом, если записей дофига, то заюзает...
 

Gas

может по одной?
после optimize тоже не юзает? сколько строк удовлетворяет условию?
 
Сверху