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

       

приводится пример плохо оптимизированного


В листинге 4 приводится пример плохо оптимизированного запроса.

Листинг 4. Недостаточно хорошо оптимизированный план выполнения запроса без использования преимуществ оптимизации Jet.

SELECT Customers.CustomerID, Customers.CompanyName

FROM Customers INNER JOIN Orders ON

Customers.CustomerID = Orders.CustomerID

WHERE ((Not (Orders.ShipCountry)="USA")) ;

-— Customers with Shipping Address Outside USA ---

- Inputs to Query –

Table 'Orders'

Table 'Customers'

Using index 'PriearyKey'

Having Indexes:

PrimaryKey 91 entries, 1 page, 91 values

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

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

- End inputs to Query -

01) Restrict rows of table Orders

by scanning

testing expression "Not Orders.ShipCountry="USA""

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

using index 'Customers!PrimaryKey'

join expression "Orders.CustomerID=Customers.CustomerID"

Недостаток данного запроса заключается в способе задания критерия отбора. Поскольку ограничения не используют индекс, запрос вынужден сканировать таблицу и проверять каждую запись на удовлетво­рение условию. Сканирование таблицы — слишком дорогостоящий процесс. Использование индексов сделало бы данный запрос намного более эффективным.


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