SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.01.2015 13:56:25

furyon
Участник
Зарегистрирован: 23.11.2014
Сообщений: 5

Оптимизация операции сравнения

Здравствуйте!

В общем есть поле `birth` т.е. год рождения. Нужно например узнать количество записей больше определенного года. Строю индекс по этому полю, эффекта практически нету, хотя explain показывает что индекс используется. На таблице в 500 000 записей запрос выполняется 0.2+ сек,  таблица будет в разы больше и подобные запросы нужны часто.
Вот пример запроса

SELECT SQL_NO_CACHE COUNT(*) as count FROM Users WHERE birth>=1945


Как мне быть, заранее спасибо.

Отредактированно furyon (19.01.2015 13:58:34)

Неактивен

 

#2 20.01.2015 18:19:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Оптимизация операции сравнения

Запрос должен работать быстро. Влезает ли индекс в память? Нужен ли точный ответ,
или оценка устроит (она есть в EXPLAIN)?

Неактивен

 

#3 20.01.2015 21:24:36

furyon
Участник
Зарегистрирован: 23.11.2014
Сообщений: 5

Re: Оптимизация операции сравнения

Сижу на винде, key_buffer_size = 200M, innodb_buffer_pool_size = 200M, таблица innodb, все индексы весят 38мб
Explain rows показывает 250к , на деле их 400к. Погрешность допустима но не такая большая. Поле по умолчанию null, но null оч редко

Отредактированно furyon (20.01.2015 21:27:49)

Неактивен

 

#4 21.01.2015 01:06:13

furyon
Участник
Зарегистрирован: 23.11.2014
Сообщений: 5

Re: Оптимизация операции сравнения

Поразмышлял тут, тот пример что я показал покрывает практически всю бд, если задать выборку поуже то ускоряется. Наверно придется с этим жить.

Неактивен

 

#5 21.01.2015 12:59:41

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Оптимизация операции сравнения

Сделайте денормализационную таблицу по годам, ее полный скан будет идти
быстрее. Например, год и количество строк. И триггеры, которые обновляют.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson