H 私は、似ているがわずかに異なる 2 つの SQL クエリの実行にかかる時間に大きな違いがある理由を理解しようとしています。以下の 2 つのサンプルと報告された時間に基づいて、ご意見をいただければ幸いです。
最初のクエリは次のとおりで、実行には約 115 ~ 154 秒かかります。
SELECT * FROM
(
SELECT a.*, ROWNUM rnum
FROM
(
SELECT ERR_ID, ERR_CREATED_BY,TO_CHAR(ERR_CREATED_DATE, 'DD/MM/YYYY H24:MI'),
ERR_SOURCE, ERR_DETAIL
FROM tdsys_errors err
WHERE ERR_SOURCE = 'Online Transaction'
ORDER BY ERR_ID DESC
) a
WHERE ROWNUM <= 25
)
WHERE rnum > 0;
2 番目のクエリは、「ORDER BY ERR_ID DESC」部分の位置に関してわずかな変更があり、実行に約 0.07 秒かかります。
SELECT * FROM
(
SELECT a.*, ROWNUM rnum
FROM
(
SELECT ERR_ID, ERR_CREATED_BY,TO_CHAR(ERR_CREATED_DATE, 'DD/MM/YYYY H24:MI'),
ERR_SOURCE, ERR_DETAIL
FROM tdsys_errors err
WHERE ERR_SOURCE = 'Online Transaction'
) a
WHERE ROWNUM <= 25
)
WHERE rnum > 0
ORDER BY ERR_ID DESC;
結果が到着した後に2番目のクエリが注文され、最初のクエリが一度に実行しようとしていると思います。これは SQL のベスト プラクティス ケースですか?
ありがとう