Для того, чтобы принять решение по оптимизации для представления или запроса, вам требуется знать план исполнения: порядок, в котором оцениваются опции объединения и фильтра. Используя функцию SYS(3054), вы можете отобразить один из трех уровней оптимизации Rushmore. Три уровня указывают степень, в которой условия фильтра или объединения были бы способны использовать оптимизацию Rushmore. Уровнями оптимизации являются "полная" (Full), частичная (Partial) или условия не являются оптимизируемыми вовсе (None).
To display the execution plan for filters
-
В окне Command , впечатайте SYS(3054,1) для включения в работу SQL ShowPlan.
-
Впечатайте ваше предложение SQL SELECT.
Например, вы можете напечатать:
Скопировать код
SELECT * FROM customer, orders ; AND Upper(country) = "MEXICO"
-
Прочитайте на экране план исполнения.
Для этого примера на экране могло быть отражено приведенное ниже:
Скопировать код
Using Index Tag Country to optimize table customer Rushmore Optimization Level for table customer: Full Rushmore Optimization level for table orders: none
-
В окне Command впечатайте SYS(3054,0) для отключения SQL ShowPlan.
Вы можете, затем, послать SYS функции значение 11 для оценки объединения в опциях FROM или WHERE.
Для отображения плана исполнения для объединений
-
В окне Command впечатайте SYS(3054,11) для включения в работе SQL ShowPlan.
-
Впечатайте ваше предложение SQL SELECT.
Например, вы можете напечатать:
Скопировать код
SELECT * ; FROM customer INNER JOIN orders ; ON customer.cust_id = orders.cust_id ; WHERE Upper(country) = "MEXICO"
-
Прочитайте на экране план исполнения.
Для этого примера на экране могло быть отражено приведенное ниже:
Скопировать код
Using Index Tag Country to optimize table customer Rushmore Optimization Level for table customer: Full Rushmore Optimization level for table orders: none Joining table customer and table orders using Cust_id
-
В окне Command впечатайте SYS(3054,0) для отключения SQL ShowPlan.
Управление оценкой объединения
Если план исполнения для ваших объединений не соответствует вашим конкретным нуждам, вы можете принудить исполнение вашего порядка объединения точно так, как он записан без оптимизации.
Для принуждения порядка оценки объединения
-
Введите ключевое слово FORCE и поместите ваши условия объединения в опцию FROM.
Замечание
Отметьте, что условия объединения, помещенные в опции WHERE не включаются в принудительную оценку объединения.
![]() |
---|
Вы не можете использовать ключевое слово FORCE в предложениях сквозных запросов SQL pass-through или с удаленными представлениями, так как это ключевое слово является расширением стандарта ANSI со стороны Visual FoxPro и не поддерживается в других словарях SQL. Опция FORCE является глобальной и поэтому применяется ко всем таблицам, включенным в опцию JOIN. Убедитесь, что порядок в котором появляются объединяемые таблицы строго соответствует порядку, в котором они должны быть объединены. Вы можете, кроме того, использовать круглые скобки для управления порядком исполнения объединений. |
В этом примере, первое указанное объединения является, кроме того, первым оцениваемым объединением.
Сначала таблица Customer объединяется с таблицей Orders. Результат этого объединения затем объединяется с таблицей
OrdItems
:
![]() | |
---|---|
SELECT * ; FROM FORCE Customers ; INNER JOIN Orders ; ON Orders.Company_ID = Customers.Company_ID ; INNER JOIN OrItems; ON OrdItems.Order_NO = Orders.Order_NO |
В этом примере, первым оценивается объединение внутри круглых скобок для таблиц
Orders
и OrdItems
. Результат этого объединения затем используется для оценки
объединения с таблицей Customers
:
![]() | |
---|---|
SELECT * ; FROM FORCE Customers ; INNER JOIN (orders INNER JOIN OrdItems ; ON OrdItems.Order_No = Orders.Order_No) ; ON Orders.Company_ID = Customers.Company_ID |
Смотрите также
Задачи
Как: установить максимальное число загружаемых записейКак: оптимизировать производительность представления
Как: создавать запросы (Visual FoxPro)
Как: Использовать совместно соединения для множества удаленных представлений
Как: протестировать соединение на доступность