版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sayyy/article/details/83654346
通用模板
SELECT *
FROM (SELECT TMP_PAGE.*, ROWNUM ROW_ID
FROM (
...//替换这里
) TMP_PAGE
WHERE ROWNUM < 10)
WHERE ROW_ID >= 1
编码时拷贝:
SELECT * FROM (SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM (
) TMP_PAGE WHERE ROWNUM < ?) WHERE ROW_ID >= ?
比如:
SELECT *
FROM (SELECT TMP_PAGE.*, ROWNUM ROW_ID
FROM (
select * from student
) TMP_PAGE
WHERE ROWNUM < 10)
WHERE ROW_ID >= 1
优化
将潜逃节省一层,可以提升效率
SELECT *
FROM (SELECT TMP_PAGE.*, ROWNUM ROW_ID
FROM student TMP_PAGE
WHERE ROWNUM < 10)
WHERE ROW_ID >= 1
对比
- 2层嵌套更加通用一些,比如做代码封装时,但,效率要低。
- 1层嵌套效率更高,但,也没法做通用代码的封装。在自己写sql时,可以使用这个方式。
- 大部分的用户只看开始 5%的数据,而没有兴趣看最后面的数据。因此,分页语句都是读取前面几页快,(相对于前面几页)越往后越慢。