Теги: sql pg_optimization pg_productivity
Оптимизация запросов в Postgresql
Оптимизация запросов в Postgresql
Оптимизируя запрос, следует обращать внимание не только на время его выполнения, но и как часто он будет выполняться.
На скорость выполнения запроса влияют следующие способы:
Обновление статистики, на основе которой планировщик строит планы
Изменения исходного кода запроса
Изменение схемы данных связанной с денормолизацией - создание материализованных представлений и временных таблиц, индексов, использование вычисляемых столбцов таблиц
Изменение параметров планировщика - использование нужных парметров соединения планировщиком, табличных выражений WITH, фиксированный порядок соединения(join_collapse_limit = 1), запрет раскрытия подзапросов и преобразования их в соединения таблиц (параметр from_collapse_limit = 1)
Изменение параметров планировщика агрегирование на основе хеширования (enable_hashagg), материализация временных наборов строк (enable_material), выполнение явной сортировки при наличии других возможностей (enable_sort), выбором метода доступа к данным (enable_seqscan, enable_indexscan, enable_indexonlyscan, enable_bitmapscan) и способасоединения наборов строк (enable_nestloop, enable_hashjoin, enable_mergejoin)
Для выбора планировщиком правильного плана, необходима актуальная статистика
Для обновления статистики используется команда ANALYZE (на уровне базы данных или на уровне таблицы)
Источники
Последнее изменение: November 6, 2024 22:43






