使用ROW_NUMBER() OVER(ORDER BY NULL):(需要排序就寫order by 字段名,但對性能影響極大)
SELECT *
FROM (SELECT A.*, ROW_NUMBER() OVER(ORDER BY NULL) RN FROM ORDER A) T
WHERE T.RN > 6039591
AND T.RN < 6039691; --115.21s
使用ROW_NUMBER() OVER(ORDER BY NULL) 配合rownum限定數量:
SELECT *
FROM (SELECT A.*, ROW_NUMBER() OVER(ORDER BY NULL) RN FROM ORDER A) T
WHERE T.RN > 8039591
AND ROWNUM < 100; --230.42s
使用ROWNUM的方式:
SELECT *
FROM (SELECT A.*, ROWNUM RN FROM ORDER A) TT
WHERE TT.RN > 7039591
AND ROWNUM < 100; --147.52 s
以上查詢是在一張一億三千多萬的表中查詢耗時,僅爲參考值,不作爲性能依據。