RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.
EXPLAIN

1. Синтаксис

sql-stmt:

EXPLAIN QUERY PLAN alter-table-stmt analyze-stmt attach-stmt begin-stmt commit-stmt create-index-stmt create-table-stmt create-trigger-stmt create-view-stmt create-virtual-table-stmt delete-stmt delete-stmt-limited detach-stmt drop-index-stmt drop-table-stmt drop-trigger-stmt drop-view-stmt insert-stmt pragma-stmt reindex-stmt release-stmt rollback-stmt savepoint-stmt select-stmt update-stmt update-stmt-limited vacuum-stmt

2. Описание

SQL-оператору может предшествовать ключевое слово "EXPLAIN" или фраза "EXPLAIN QUERY PLAN". Модификация заставляет SQL-оператор вести себя как запрос и возвращать информацию о том, как SQL-оператор работал бы, если бы ключевое слово EXPLAIN или фраза были опущены.

Вывод EXPLAIN и EXPLAIN QUERY PLAN предназначается только для интерактивного анализа и поиска неисправностей. Детали выходного формата подвержены изменениям от одного выпуска SQLite к следующему. Запросы не должны использовать EXPLAIN или EXPLAIN QUERY PLAN, так как их точное поведение переменное и только частично зарегистрировано.

Когда ключевое слово EXPLAIN появляется отдельно, оно заставляет запрос вести себя как запрос, который возвращает последовательность инструкций по виртуальной машине. Когда фраза EXPLAIN QUERY PLAN появляется, запрос возвращает информацию высокого уровня относительно плана запросов, который использовался бы.

EXPLAIN QUERY PLAN описана подробнее здесь.

2.1. EXPLAIN работает во времени выполнения, не во время подготовки

EXPLAIN и EXPLAIN QUERY PLAN затрагивают поведение управления подготовленного запроса через sqlite3_step(). Процесс создания нового подготовленного запроса, используя sqlite3_prepare() или подобное (главным образом) не затронут EXPLAIN. Исключение: некоторые специальные коды операции, используемые EXPLAIN QUERY PLAN, опущены, строя EXPLAIN QUERY PLAN подготовленный запрос как исполнительная оптимизация.

Это означает, что действия, которые происходят во время sqlite3_prepare(), не затронуты EXPLAIN.

  • Некоторые PRAGMA делают свою работу во время sqlite3_prepare(), а не во время sqlite3_step(). Эти PRAGMA не затронуты EXPLAIN. Они управляют тем же самым с или без префикса EXPLAIN. Набор PRAGMA, которые не затронуты EXPLAIN, может измениться от одного выпуска до следующего. Некоторые PRAGMA работают во время sqlite3_prepare() в зависимости от их аргументов. Для последовательных результатов избегайте использования EXPLAIN на PRAGMA.

  • Отзыв авторизатора вызван независимо от присутствия EXPLAIN или EXPLAIN QUERY PLAN.