одинаковые таблицы ( всё та же с 100 колонками и одной "col1" в order by ), но в одной сделал партиционирование по месяцу " toYYYYMM( date )".
выполняю запрос:
select count(), sum ( col_for_sum )
from t1
where col1 IN ( select col1 from t1 where toYYYYMM( date ) in ( 201901, 201902, 201906, 201911 ) limit 100млн)
and toYYYYMM( date ) IN ( 201911, 201906 )
без партиционирвоания:
1 rows in set. Elapsed: 127.581 sec. Processed 347.30 million rows, 2.59 GB (2.72 million rows/s., 20.34 MB/s.)
с партиционированием:
1 rows in set. Elapsed: 260.648 sec. Processed 1.92 billion rows, 53.79 GB (7.37 million rows/s., 206.35 MB/s.)
Почему партиционирование замедляет запрос?
Partition pruning так не работает. Ему необходимо на этапе анализа запроса понять какие парты надо читать, он не ходит в таблицу. Надо в where указать значения колонок по которым партиционировано
Обсуждают сегодня