Мы анализируем SQL-запросы в базе данных Oracle 12c. Мы заметили, что следующее утверждение улучшилось, выполнив несколько раз. Как можно объяснить, что он улучшается, выполняя его второй и третий раз?Oracle SQL-запрос повышает производительность при втором и третьем выполнении
SELECT COUNT (*)
FROM asset
WHERE ( ( (status NOT IN ('x1', 'x2', 'x3'))
AND ((siteid = 'xxx')))
AND (EXISTS
(SELECT siteid
FROM siteauth a, groupuser b
WHERE a.groupname = b.groupname
AND b.userid = 'xxx'
AND a.siteid = asset.siteid)))
AND ((assetnum LIKE '5%'));
- Первый запуск: 24 сек.
- Второй запуск: 17 сек.
- Третий проход: 7 сек.
- Четвертый пробег: 7 сек.
- Настроено с использованием результата наличными: 0,003 Sec.
Вы сбрасывали shared_pool и buffer_cache перед запуском второго, третьего и так далее? Oracle кэширует результаты запросов. – Kacper
Адаптивная оптимизация запросов: http://www.oracle.com/technetwork/database/database-technologies/query-optimization/overview/index.html –