也说sqlserver分页查询

来源:互联网 发布:Linux deploy vnc 编辑:程序博客网 时间:2024/05/17 09:19
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

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

1.selecttop@pagesize*fromtable1whereidnotin (selecttop@pagesize*(@page-1)id fromtable1orderbyid)orderbyid

2.select* from(selecttop@pagesize*from(selecttop@pagesize*@page*fromtable1orderbyid)aorderbyiddesc)borderbyid

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

做两个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就会非常影响性能了.

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击