我想查一个大表的数据,大概有10M条数据,取其中的25条。测试发现两种方法时间差别很大,想求问大神原因。
第一种
SELECT * FROM (SELECT t.*,row_number() OVER (ORDER BY t.id DESC) AS rn FROM td_test t) WHERE rn BETWEEN 9999975 AND 10000000
大概用时5分钟。
第二种
SELECT * FROM (SELECT t.* FROM td_test t ORDER BY t.id DESC) WHERE rownum BETWEEN 9999975 AND 10000000
大概耗时1分30秒
为什么差别如此之大?求原因!