Управление рашмор-оптимизацией 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 |