приводится пример плохо оптимизированного
В листинге 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"
Недостаток данного запроса заключается в способе задания критерия отбора. Поскольку ограничения не используют индекс, запрос вынужден сканировать таблицу и проверять каждую запись на удовлетворение условию. Сканирование таблицы — слишком дорогостоящий процесс. Использование индексов сделало бы данный запрос намного более эффективным.
Содержание раздела