﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-分享ｊａｖａ带来的快乐-文章分类-SQLServer</title><link>http://www.blogjava.net/lyjjq/category/50152.html</link><description>我喜欢ｊａｖａ新东西</description><language>zh-cn</language><lastBuildDate>Wed, 28 Dec 2011 21:23:04 GMT</lastBuildDate><pubDate>Wed, 28 Dec 2011 21:23:04 GMT</pubDate><ttl>60</ttl><item><title>SQL Server 分页取数据语句</title><link>http://www.blogjava.net/lyjjq/articles/366458.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Thu, 15 Dec 2011 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/366458.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/366458.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/366458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/366458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/366458.html</trackback:ping><description><![CDATA[<font color="#cc0000">SELECT T1.* FROM (SELECT ROW_NUMBER() OVER ( ORDER BY userid desc) AS ROW_NUMBER, thinkphp.* FROM (SELECT&nbsp; * FROM coupon_alipay_whitelist) AS thinkphp) AS T1 WHERE (T1.ROW_NUMBER BETWEEN 40 + 1 AND 40 + 20)</font><img src ="http://www.blogjava.net/lyjjq/aggbug/366458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2011-12-15 16:58 <a href="http://www.blogjava.net/lyjjq/articles/366458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer 分页sql</title><link>http://www.blogjava.net/lyjjq/articles/364460.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Mon, 21 Nov 2011 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/364460.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/364460.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/364460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/364460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/364460.html</trackback:ping><description><![CDATA[<div class="postBody">
<div id="cnblogs_post_body">有关分页 SQL 的资料很多，有的使用存储过程，有的使用游标。本人不喜欢使用游标，我觉得它耗资、效率低；使用存储过程是个不错的选择，因为存储过程是经过预编译的，执行效率高，也更灵活。先看看单条 SQL 语句的分页 SQL 吧。<br /><br />方法1：<br />适用于 SQL Server 2000/2005<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TOP</span><span style="color: #000000">&nbsp;页大小&nbsp;</span><span style="color: #808080">*页数</span><span style="color: #000000"><br /></span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;table1<br /></span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #808080">NOT</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">IN</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TOP</span><span style="color: #000000">&nbsp;页大小</span><span style="color: #808080">*</span><span style="color: #000000">(<span style="color: #000000">页</span>数</span><span style="color: #808080">-</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">) id&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;table1&nbsp;</span><span style="color: #0000ff">ORDER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br /></span><span style="color: #0000ff">ORDER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;id</span></div><br /><font face="Verdana">方法2：<br />适用于 SQL Server 2000/2005<br /></font>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TOP</span><span style="color: #000000">&nbsp;页大小&nbsp;</span><span style="color: #808080">*页数</span><span style="color: #000000"><br /></span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;table1<br /></span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">ISNULL</span><span style="color: #000000">(</span><span style="color: #ff00ff">MAX</span><span style="color: #000000">(id),</span><span style="color: #800000; font-weight: bold">0</span><span style="color: #000000">)&nbsp;<br /></span><span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM</span><span style="color: #000000">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TOP</span><span style="color: #000000">&nbsp;页大小</span><span style="color: #808080">*</span><span style="color: #000000">(<span style="color: #000000">页</span>数</span><span style="color: #808080">-</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">) id&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;table1&nbsp;</span><span style="color: #0000ff">ORDER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;</span><span style="color: #000000">A<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br /></span><span style="color: #0000ff">ORDER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;id</span></div><br /><font face="Verdana">方法3：<br />适用于 SQL Server 2005</font><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TOP</span><span style="color: #000000">&nbsp;页大小&nbsp;</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;页数<br /></span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;ROW_NUMBER()&nbsp;</span><span style="color: #0000ff">OVER</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">ORDER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;id)&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;RowNumber,</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;table1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;A<br /></span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;RowNumber&nbsp;</span><span style="color: #808080">&gt;</span><span style="color: #000000">&nbsp;页大小</span><span style="color: #808080">*</span><span style="color: #000000">(页数</span><span style="color: #808080">-</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">)</span></div>
<p><br />说明，页大小：每页的行数；页数：第几页。使用时，请把&#8220;页大小&#8221;和&#8220;页大小*(页数-1)&#8221;替换成数字。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>其它的方案：如果没有主键，可以用临时表，也可以用方案三做，但是效率会低。<br />建议优化的时候，加上主键和索引，查询效率会提高。</p>
<p>通过SQL 查询分析器，显示比较：我的结论是:<br />分页方案二：(利用ID大于多少和SELECT TOP分页）效率最高，需要拼接SQL语句<br />分页方案一：(利用Not In和SELECT TOP分页)&nbsp;&nbsp; 效率次之，需要拼接SQL语句<br />分页方案三：(利用SQL的游标存储过程分页)&nbsp;&nbsp;&nbsp; 效率最差，但是最为通用</p></div><script type="text/javascript">
if ($ != jQuery) {
	$ = jQuery.noConflict();
}
var isLogined = false;
var cb_blogId = 26891;
var cb_entryId = 1367277;
var cb_blogApp = "morningwang";
var cb_blogUserGuid = "2a753d0b-63cf-dd11-9e4d-001cf0cd104b";
var cb_entryCreatedDate = '2009/1/2 22:41:00';
</script>
<div id="blog_post_info_block">&nbsp;</div></div> <img src ="http://www.blogjava.net/lyjjq/aggbug/364460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2011-11-21 17:12 <a href="http://www.blogjava.net/lyjjq/articles/364460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>