Spec-Zone.ru › SQLite

ОБЪЯСНЕНИЕ

1. Синтаксис

sql-stmt:

ОБЪЯСНЕНИЕ ЗАПРОС ПЛАН 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 vacuum-stmt

2.Описание

SQL-оператор может быть предваряем ключевым словом «EXPLAIN» или фразой «EXPLAIN QUERY PLAN». Любое из этих изменений заставляет SQL-оператор работать как запрос и возвращать информацию о том, как бы SQL-оператор работал, если бы ключевое слово EXPLAIN или фраза не были указаны.

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

Когда ключевое слово EXPLAIN появляется само по себе, это заставляет оператор работать как запрос, который возвращает последовательность виртуальных машинных инструкций, которые он использовал бы для выполнения команды, если бы ключевое слово 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.

Эта страница была в последний раз изменена 08.01.2022 05:02:57 UTC

SQLite is in the Public Domain.
https://sqlite.org/lang_explain.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API