ORDER BY и использование materialized views.
Мы увидим, как эти подходы позволяют сократить время выполнения запросов с секунд до миллисекунд.
Оптимизируйте ключи ORDER BY
project и subproject.
В этом случае их стоит добавить в ключ сортировки, а также столбец time, поскольку запросы выполняются и по времени.
Давайте создадим ещё одну версию таблицы с теми же типами столбцов, что и у wikistat, но с сортировкой по (project, subproject, time).
| Запрос | (time) | (project, subproject, time) |
|---|---|---|
| 2.381 с | 1.660 с | |
| 2.148 с | 0.058 с | |
| 2.192 с | 0.012 с | |
| 2.968 с | 0.010 с |
Materialized views
Создание materialized view
Дозагрузка целевой таблицы
wikistat, поэтому нужно выполнить дозагрузку.
Проще всего сделать это с помощью оператора INSERT INTO SELECT: выполнить вставку напрямую в целевую таблицу materialized view, используя запрос SELECT этого представления (преобразование):
- Создание временной таблицы с движком таблицы Null
- Подключение копии обычно используемого materialized view к этой временной таблице
- Использование запроса
INSERT INTO SELECTдля копирования всех данных из исходного набора данных в эту временную таблицу - Удаление временной таблицы и временного materialized view.
wikistat_backfill и записывать в wikistat_top
wikistat_backfill данными из исходной таблицы wikistat: