MySQL запрос с использованием имени раздела vs где предложение - PullRequest
0 голосов
/ 11 октября 2019

У меня есть таблица, разделенная по дате. Я заметил, что когда я запрашиваю таблицу, используя имя раздела, это быстрее по сравнению с запросом, используя предложение where.

Например:

select max(db_load_timestamp) from my_table partition(p20191008);(выполняется за 9 секунд)

дает результаты быстрее, чем

select max(db_load_timestamp) from my_table where date='2019-10-08'; (выполняется за 50 секунд)

Любая идея, почему это происходит, поскольку оба запроса должны принимать примерно равныевремя, как оба запроса используют разделение использования?

1 Ответ

0 голосов
/ 11 октября 2019

Когда вы используете разделение, вы пересекаете объем данных, к которым осуществляется доступ. Я нашел эту цитату:

Секционирование позволяет разделять таблицы, индексы и таблицы, организованные по индексу, на более мелкие части, поэтому запросы, которые обращаются только к части данных, могут выполняться быстрее, потому что данных меньше. для сканирования.

По этой ссылке

Примечание Согласно документация разбиение не рекомендуется ...

...