Access. Программирование на VBA

       

Для оптимизации запросов Jet производит


Для оптимизации запросов Jet производит сложную оценку стоимости. В число этих сложных оценок входит просмотр статистики базы данных. На основе статистических данных Jet сообщается о количестве страниц данных, страниц индекса, строк в таблицах и т.д. При нестандартном завершении работы базы данных статистика может быть искажена, транзакции отменены либо базе данных может понадобиться сжатие. При оптимизации всегда вначале следует сжимать базу данных.

Как известно. Jet создает план выполнения для каждого запроса. Создав в системном реестре запись

\HKEY_LOCALMACHINS\SOFTWARE\MICROSOFT\JET\4 . 0\ENGINES\DEBUG

и установив значение строки в ON, Jet создает или добавляет текстовый файл в текущей папке плана выполнения запроса. В этот план входит многое из того, что было описано выше. План изменить невоз­можно, если не изменять схему данных, структуру запроса или ограничения запроса. Чем подробнее план, тем лучше. В листинге 3 приведен план выполнения для запроса Quarterly Orders для фирмы Northwind.

Листинг 3. План выполнения с использованием преимуществ срочной оптимизации.

--- Quarterly Orders ---

-          Inputs to Query –

-          Table 'Customers'

Using index 'PrimaryKey'

Having Indexes:

PrimaryKey 91 entries, I page, 91 values

which has 1 column, fixed, unique, primary-key, no-null

PostalCode 91 entries, 1 page, 87 values

which has 1 column, fixed

CompanyName 91 entries, 3 pages, 91 values



which has 1 column, fixed

City 91 entries, 1 page, 69 values

which has 1 column, fixed

Table 'Orders'

- End inputs to Query -

 

01) Restrict rows of table Orders

using rushmore

for expression "Orders.OrderDate Between #1/1/98# And #12/31/98#"

02) Outer Join result of '01)'  to table 'Customers'

using index 'Customers!PrimaryKey'

join expression "Orders.CustomerID=Customers.CustomerID"

03)  Sort Distinct result of '02)'

Можно увидеть раздел базовой таблицы с анализом индексов и количеством записей, баз данных, страниц индекса и оцениваемых значений. Обратите внимание, что данный запрос может быть обрабо­тан методом срочной оптимизации, поскольку существует индекс для поля Order Date таблицы Orders. План определяет связь между таблицей Orders и таблицами Customers как внешнюю связь. Индексы и срочная оптимизация прекрасно оптимизируют данный запрос. Если разработчик не уверен в том, насколь­ко хорошо был оптимизирован запрос, можно проверить план выполнения. SHOWPLAN не документи­рован и не поддерживается. Некоторые запросы не создают планов, и некоторые планы неверны, но с долей осторожности все же можно пользоваться JetShowPlan.


Содержание раздела