Oracle 12c データベースで SQL ステートメントを分析しています。数回実行すると、次のステートメントが改善されることがわかりました。2回、3回と実行することで改善されるとは、どのように説明できるでしょうか。
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 秒。
- 2 回目: 17 秒
- 3回目:7秒
- 4回目:7秒
- 結果キャッシュを使用して調整: 0,003 秒。