Распечатать страницу

Управление рашмор-оптимизацией Visual FoxPro

« Назад

Команда

SET OPTIMIZE ON | OFF

включает (ON) или отключает (OFF) рашмор-оптимизацию. По умолчанию действует ON.

Отключить рашмор-оптимизацию потребуется, если оптимизируемая команда модифицирует используемые для оптимизации индексы.

Установка SET OPTIMIZE распространяется на все команды. Кроме того, каждая оптимизируемая команда будет исполняться без рашмор-оптимизации, если употреблена с опцией NOOPTIMIZE.

Функция

SYS(3054 [, 0 | 1 | 11 | 2 | 12] [, cMemvar])

включает или отключает отображение уровней рашмор-оптимизации запросов. Возвращает строку, содержащую номер текущего уровня отображения сведений о рашмор-оптимизации запроса (число 0, 1, 2, 11 или 12).

Параметры:

0 – (по умолчанию) отключает вывод сведений о рашмор-оптимизации; значение переменной, заданной строкой cMemvar, не отображается.

1 – активизирует вывод сведений о рашмор-оптимизации фильтров.

11 – активизирует вывод сведений о рашмор-оптимизации объединений.

2 – то же, что и 1 плюс вывод текста SQL-запроса.

12 – то же, что и 11 плюс вывод текста SQL-запроса.

cMemvar – строка, содержащая имя переменной, в которую заносится получаемая функцией SYS(3054) информация. Значение переменной может быть проанализировано после выполнения запроса.

Уровни рашмор-оптимизации запроса описаны в табл. 8.2.

Таблица 8.2

Уровни рашмор-оптимизации запроса

Уровни рашмор-оптимизации

Описание

Отсутствует

Запрос не может быть оптимизирован средствами рашмор-технологии

Частичная

Некоторые выражения текста запроса оптимизированы. Выводится список индексов, используемых рашмор-оптимизацией

Полная

Запрос полностью оптимизирован. Выводится список индексов, используемых рашмор-оптимизацией

Функция позволяет проанализировать, насколько текст запроса приемлем для рашмор-оптимизации. Если выяснится, что уровень оптимизации недостаточен, то можно принять решение об изменении текста запроса.

Пример. Выводится информация о рашмор-оптимизации запроса, выбирающего книги, содержащие романы и/или рассказы.

local rushMore

? Sys(3054, 11, "rushMore") && Напечатает: 11

close databases

open database 'd:\FoxProBooks\HomeLibrary\HomeLibrary'

select distinct Book from Books as B ;

inner join BooksContent as C on B.BookId = C.BookId ;

inner join WorkType as W on C.TypeId = W.TypeId ;

where Left(W.WorkType, 2) like "Р_"

? rushMore

Результат:

Rushmore optimization level for table b: none

Rushmore optimization level for table c: none

Rushmore optimization level for table w: none

Joining table W and table C using index tag TypeId

Joining intermediate result and table B using index tag BookId