Инструменты пользователя

Инструменты сайта


explain

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

explain [2013/12/27 18:55]
explain [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== EXPLAIN ======
 +  * [[http://www.postgresql.org/docs/8.4/static/using-explain.html|PostgreSQL 8.4 Using EXPLAIN]]
 +  * [[http://postgresql.leopard.in.ua/html/#x1-300002.6|А. Ю. Васильев aka leopard Работа с PostgreSQL. Оптимизация БД и приложения]]
  
 +  * [[http://habrahabr.ru/post/98904/|Что интересного нам расскажет EXPLAIN EXTENDED?]]
 +  * [[http://www.opennet.ru/base/dev/postgresql_tune.txt.html|Оптимизация SQL запросов и борьба с deadlock]]
 +
 +Команда **EXPLAIN [запрос]** показывает, каким образом сервер баз данных, например [[PostgreSQL]] собирается выполнять ваш запрос.
 +
 +Команда **EXPLAIN ANALYZE [запрос]** выполняет запрос и показывает как изначальный план, так и реальный процесс его выполнения.
 +
 +В выводе команды следует обращать внимание на следующее:
 +  * Использование полного просмотра таблицы (seq scan).
 +  * Использование наиболее примитивного способа объединения таблиц (nested loop).
 +<note>Следует отметить, что полный просмотр таблицы далеко не всегда медленнее просмотра по индексу. Если, например, в таблице–справочнике несколько сотен записей, умещающихся в одном-двух блоках на диске, то использование индекса приведёт лишь к тому, что придётся читать ещё и пару лишних блоков индекса. Если в запросе придётся выбрать 80% записей из большой таблицы, то полный просмотр опять же получится быстрее.</note>