东方丽日 發表於 2023-10-2 00:00:00

分享三种高效率SQL语句分页方法

<p>
        1.如果有一个自动增长的id字段,则:<br><br>
        定义二个变量:Page,PageCount<br><br>
        Select top PageCount * From Where id&gt;=(select min(id) from (select top (Page-1)*PageCount+1 id from order by id desc) as t) order by id desc<br><br>
        原理,根据ID计算出(Page-1)页的最小值,然后用TOP关键字及可解决问题。<br><br><br>
        2.SELECT TOP 10 id,username From where id not in<br>
        ( SELECT TOP 20000 id FROM tb_code ORDER BY username)<br><br>
        优点:此方法可以根据表中的任一个字段排序,在一个表中有几百万条记录时,仍有很高的效率,缺点是在大数据量的情况下效率略逊于第一种<br><br><br>
        3.SELECT TOP 10 id,username From<br>
        (SELECT TOP page*pagecount id, username FROM tb_code ORDER BY username)<br>
        DERIVEDTBL ORDER BY username DESC<br><br>
        优点:此方法可以根据表中的任一个字段排序.<br>
        缺点是效率最低<br><br><br>
        在SQL Server 2005中使用rownum分页(rownum函数使用方法介绍)<br><br>
        比方说要从表USER中查看第10到第20条之间的数据,那么SQL是这样实现的<br><br>
        SELECT * FROM (SELECT rownum rowcount,USER.* FROM USER) WHERE ROWCOUNT &gt;=10 AND ROWCOUNT &lt;20<br><br>
        其中函数ROWNUM,用来记录每一条数据所在的位置。</p>
頁: [1]
查看完整版本: 分享三种高效率SQL语句分页方法