Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
В общем есть поле `birth` т.е. год рождения. Нужно например узнать количество записей больше определенного года. Строю индекс по этому полю, эффекта практически нету, хотя explain показывает что индекс используется. На таблице в 500 000 записей запрос выполняется 0.2+ сек, таблица будет в разы больше и подобные запросы нужны часто.
Вот пример запроса
Отредактированно furyon (19.01.2015 13:58:34)
Неактивен
Запрос должен работать быстро. Влезает ли индекс в память? Нужен ли точный ответ,
или оценка устроит (она есть в EXPLAIN)?
Неактивен
Сижу на винде, key_buffer_size = 200M, innodb_buffer_pool_size = 200M, таблица innodb, все индексы весят 38мб
Explain rows показывает 250к , на деле их 400к. Погрешность допустима но не такая большая. Поле по умолчанию null, но null оч редко
Отредактированно furyon (20.01.2015 21:27:49)
Неактивен
Поразмышлял тут, тот пример что я показал покрывает практически всю бд, если задать выборку поуже то ускоряется. Наверно придется с этим жить.
Неактивен
Сделайте денормализационную таблицу по годам, ее полный скан будет идти
быстрее. Например, год и количество строк. И триггеры, которые обновляют.
Неактивен