也说sql server分页查询

王朝mssql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

现在一般常用的有以下2种方法:

1. select top @pagesize * from table1 where id not in (select top @pagesize*(@page-1) id from table1 order by id) order by id

2. select * from (select top @pagesize * from (select top @pagesize*@page * from table1 order by id) a order by id desc) b order by id

哪种方法更好?试了一下.

做两个table,各有1万条记录,一个table的id有index,一个没有

图1,没有index的table,取第1000-1100条记录

图2,没有index的table,取第9000-9100条记录

图3,有index,取第1000-1100条记录

图4,有index,取第9000-9100条记录

可以发现sort的字段建立了index的条件下,第1个方法快很多,特别是查到后面页数的时候.原因就在于第2个方法中,第一次做了select 后,再做自查询时,index已经没有了.sort就会非常影响性能了.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航