2014-11-08 3 views
2

Привет, ребята, пожалуйста, помогите мне с этим.Оптимизация и индексирование MySQL

У меня есть tablemasterlist с миллионом записей. Я использовал Index для CycleDate и ProductType. Я ожидал рекордного количества 100,132, но sql scan слишком много строк.

explain SELECT * FROM tblmasterlist where CycleDate BETWEEN '2014-08-01' AND '2014-08-30' 

enter image description here


+0

что, если вы используете старый метод школы в cycledate> = 2014-08-01 и cycledate <= 2014-08-30 – Christian

+0

ваш индекс типа BTree? – Jaylen

+0

Попробуйте запустить ANALYZE TABLE; MRR на сервере? Вы можете проверить 'select @@ optimizer_switch;' – Jaylen

ответ

1

Ваш индекс CycleDate в порядке и используется в этом запросе. Как сказал Майк, убедитесь, что это Typ=BTREE, так как вы выбираете значение RANGE значений (см. here).

Количество записей, данных EXPLAIN является оценка числа строк не реальное количество MySQL должен сканировать (см here):

The rows column indicates the number of rows MySQL believes 
it must examine to execute the query. 
For InnoDB tables, this number is an estimate, and may not always be exact. 

Вы можете увеличить точ- путем обновления индекса статистики:

OPTIMIZE TABLE tblmasterlist 
Смежные вопросы