PLAN
Предложение PLAN позволяет пользователю указать свой план выполнения запроса, переопределяя тот план, который оптимизатор сгенерировал автоматически.
PLAN <plan-expr>
<plan-expr> ::=
(<plan-item> [, <plan-item> ...])
| <sorted-item>
| <joined-item>
| <merged-item>
| <hash-item>
<sorted-item> ::= SORT (<plan-item>)
<joined-item> ::= JOIN (<plan-item>, <plan-item> [, <plan-item> ...])
<merged-item> ::=
[SORT] MERGE (<sorted-item>, <sorted-item> [, <sorted-item> ...])
<hash-item> ::= HASH (<plan-item>, <plan-item> [, <plan-item> ...])
<plan-item> ::= <basic-item> | <plan-expr>
<basic-item> ::= <relation> {
NATURAL
| INDEX (<indexlist>)
| ORDER index [INDEX (<indexlist>)]
}
<relation> ::= table | view [table]
<indexlist> ::= index [, index ...]
| Параметр | Описание |
|---|---|
table |
Имя таблицы или её алиас. |
view |
Имя представления. |
index |
Имя индекса. |
Каждый раз, когда пользователь отправляет запрос ядру Firebird, оптимизатор вычисляет стратегию извлечения данных.Большинство клиентов Firebird имеют возможность отобразить пользователю план извлечения данных.В собственном инструменте isql это делается с помощью команды SET PLAN ON.Если вы хотите только изучить план запроса без его выполнения, то вам необходимо ввести команду SET PLANONLY ON, после чего будут извлекаться планы запросов без их выполнения.Для возврата isql в режим выполнения запросов введите команду SET PLANONLY OFF.
|
Note
|
Более подробный план можно получить при включении расширенного плана.В |
В большинстве случаев, вы можете доверять тому, что Firebird выберет наиболее оптимальный план запроса.Однако если ваши запросы очень сложны и кажется, что они выполняются не эффективно, то вам необходимо посмотреть план запроса,и подумать можете ли вы улучшить его.