Частый совет при медленной работе запроса в PostgreSQL — используй explain. Легко сказать, используй explain. Когда первый раз вводишь
explain select <тормозящий запрос>
первая мысль: лучше бы я этого не вводил, понимания не прибавилось :)
Серия из трёх небольших статей Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть два, три) погружает в основы explain.
В статье освещаются интересные вопросы:
— как читать explain и что означают загадочные значения cost, rows, width
— explain analyze для получения реальных данных, а не только прикидок планировщика
— как посмотреть, какая часть данных берется из кеша, а какая читается с диска
— какие опции нужно настроить, чтобы операции выполнялись в памяти без использования временных файлов на диске
— каким способом осуществляется чтение данных и как добиться, чтобы применялся индекс или, наоборот, запретить применение индекса
#skills #database
