Postgres EXPLAIN ANALYZE намного быстрее, чем обычный запрос - PullRequest
3 голосов
/ 06 августа 2010

Я пытаюсь оптимизировать запрос PostgreSQL 8.4.После значительного упрощения исходного запроса, пытаясь выяснить, из-за чего он выбрал неправильный план запроса, я дошел до того, что выполнение запроса в EXPLAIN ANALYZE занимает всего 0,5 с, а его выполнение обычно занимает 2,8 с.Тогда кажется очевидным, что EXPLAIN ANALYZE показывает мне не то, что обычно делает, поэтому все, что он мне показывает, бесполезно, не так ли?Что здесь происходит и как я вижу, что на самом деле делает?

Ответы [ 2 ]

3 голосов
/ 06 августа 2010

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

1 голос
/ 25 ноября 2014

Показывает меньше времени, потому что:

1) Общее время выполнения , показанное EXPLAIN ANALYZE, включает время запуска и выключения исполнителя, а также время запуска любоготриггеры, которые срабатывают, но не включают время синтаксического анализа, перезаписи или планирования.

2) Поскольку выходные строки не доставляются клиенту, затраты на передачу по сети и преобразование ввода / вывода не включены.

Предупреждение!

Издержки измерения, добавленные EXPLAIN ANALYZE, могут быть значительными, особенно на машинах с медленными вызовами операционной системы gettimeofday ().Итак, желательно использовать EXPLAIN (ANALYZE TRUE, TIMING FALSE).

...