SQL Server 中的三种分页方式
时间:2022-03-10 17:59
DECLARE @page_size INT = 20; DECLARE @page_index INT = 3; WITH ID_List AS ( SELECT TOP (@page_size * @page_index) ID FROM ClassB WHERE CreateDate BETWEEN ‘2014-07-13‘ AND ‘2014-07-14‘ ORDER BY CreateDate DESC, ID DESC ) ,ID_List_Current AS ( SELECT ID FROM ID_List WHERE ID NOT IN(SELECT TOP (@page_size * (@page_index - 1)) ID FROM ID_List) ) SELECT * FROM ClassB WHERE ID IN (SELECT ID FROM ID_List_Current);
表 ‘ClassB‘。扫描计数 2,逻辑读取 52 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
查询第30页的数据仅比查询第3页的数据多出两次逻辑读取,方案C和B的唯一在于:子查询中的查询列,方案B中返回了所有字段,所有要通过聚集索引走lookup,而方案C直接返回索引键即可。
表 ‘ClassB‘。扫描计数 2,逻辑读取 54 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 中的三种分页方式,布布扣,bubuko.com