次のクエリの結果は奇妙です (DB2 は初めてです)。クエリで言及しなかったテーブルの列ごとに結果を並べ替えました。
WITH RESULT AS (
SELECT T1.*, ROWNUMBER() OVER() AS RNUM
FROM TableNAmeT1
WHERE column1= 'xyz'
)
SELECT *
FROM RESULT
WHERE RNUM BETWEEN 1 AND 100
ORDER BY ORDER OF RESULT OPTIMIZE FOR 100 ROWS
次のクエリを使用するとソートされません
WITH RESULT AS (
SELECT T1.*, ROWNUMBER() OVER() AS RNUM
FROM TableNAmeT1
WHERE column1= 'xyz'
)
SELECT *
FROM RESULT
ORDER BY ORDER OF RESULT
- これは、テーブルのインデックスまたはその他の理由によるものですか。通常、これらのテーブルは FIFO です。
** これは明らかに、「OPTIMIZE FOR 100 ROWS」句と、(WHERE 句での) フィルタリングのためのスカラー値 (ROWNUMBER() の使用) の両方によるものです。
** 質問をさらに絞り込むと、最初のクエリと 2 番目のクエリの順序が異なる理由を知りたいです。
皆さんありがとう