2016-09-25 3 views
-1

У меня есть таблица с разбивкой по дате (timestamp with simple index) с ~ 1000000 строк.MySQL SELECT в подзапросе из той же таблицы

Мне нужно получить строки по дате + другие необязательные критерии столбцов.

Могу ли я использовать подзапрос для оптимизации скорости?

Например: в подзапросе сначала выберите строки по дате (это будет довольно быстро по индексу), а затем выберите строки по другим критериям из таблицы результатов.

+0

Пожалуйста, предоставьте 'SHOW CREATE TABLE' и образец' SELECT'. В схеме есть много тонких вещей и/или выберите, которые необходимо проанализировать. –

+0

Пример того, что делать «неправильно», помещает метку времени в любом индексе. –

ответ

0

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

Используйте EXPLAIN, чтобы исследовать план выполнения ваших запросов и выполнить собственное сравнение. Пожалуйста, обратитесь к руководству MySQL, чтобы узнать больше о том, как движок будет выполнять ваш оператор. Подробнее о оптимизации запросов можно найти в section 9.8.

Смежные вопросы