﻿<?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>博客园-perfectdesign</title><link>http://www.cnblogs.com/perfectdesign/</link><description>Share精神</description><language>zh-cn</language><lastBuildDate>Tue, 19 Aug 2008 21:29:57 GMT</lastBuildDate><pubDate>Tue, 19 Aug 2008 21:29:57 GMT</pubDate><ttl>60</ttl><item><title>MSSQL优化教程之1.4 其他几种类型的页面</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/18/other_type_page_in_mssql.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Mon, 18 Aug 2008 08:32:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/18/other_type_page_in_mssql.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1270433.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/18/other_type_page_in_mssql.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1270433.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1270433.html</trackback:ping><description><![CDATA[摘要: 上一次只是讲了讲普通数据页面，后来自己回想一下，应该跟大家讲讲其他类型的页面，作为一个知识体系贯穿起来。  再长叹一声，我的兄弟因伤退赛，唉，真是可惜了..................&nbsp;&nbsp;<a href='http://www.cnblogs.com/perfectdesign/archive/2008/08/18/other_type_page_in_mssql.html'>阅读全文</a><img src ="http://www.cnblogs.com/perfectdesign/aggbug/1270433.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41783/" target="_blank">[新闻]微软披露Windows 7功能开发团队名单</a>]]></description></item><item><title>MSSQL优化之 1.3 存储架构之 页</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/17/sqlserver_page.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Sun, 17 Aug 2008 14:02:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/17/sqlserver_page.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1269926.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/17/sqlserver_page.html#Feedback</comments><slash:comments>33</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1269926.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1269926.html</trackback:ping><description><![CDATA[<h1><span style="font-family: 宋体;">数据库的页构成</span></h1>
<h2><span style="font-family: 宋体;">页</span></h2>
<p>SQL Server<span style="font-family: 宋体;">中的页是最基本的数据单位组成，他有</span>8KB<span style="font-family: 宋体;">，也就是</span>8192<span style="font-family: 宋体;">个字节（</span>mssql7.0<span style="font-family: 宋体;">以前是一个页面</span>2KB<span style="font-family: 宋体;">），而</span>sql server<span style="font-family: 宋体;">的一个页面，由页头，数据行，和</span>slot table<span style="font-family: 宋体;">组成（行偏移的位置的记录数组。</span></p>
<h3><span style="font-family: 宋体;">页头</span></h3>
<p><span style="font-family: 宋体;">页头是一个固定的</span>96<span style="font-family: 宋体;">字节的大小，他是一个页面的元数据，记载与本页相关的许多信息，具体的参数，大家可以参看我很久以前写的一篇文章，</span><a href="http://www.cnblogs.com/perfectdesign/archive/2008/01/31/mssqlpageheader.html">SQL server<span style="font-family: 宋体;"><span>数据页页头参数列表</span></span></a><span style="font-family: 宋体;">，这篇文章没有太细致的对参数进行讲解，我在这里仔细说一下：</span></p>
<p>PAGEID<span style="font-family: 宋体;">：</span></p>
<p><span style="font-family: 宋体;">页面的</span>ID<span style="font-family: 宋体;">，在</span>mssql<span style="font-family: 宋体;">中，唯一定位一行数据（包括索引）的，靠的是</span>mssql<span style="font-family: 宋体;">里面的一个我把它称之为的三段式表达式：</span>FPS ID<span style="font-family: 宋体;">，即</span> file id,page id,slot id<span style="font-family: 宋体;">。</span>File ID <span style="font-family: 宋体;">为文件</span>ID<span style="font-family: 宋体;">，找到行所在的文件，</span>pageID<span style="font-family: 宋体;">找到行所在的页面，</span>slot ID<span style="font-family: 宋体;">为插槽</span>ID<span style="font-family: 宋体;">，即这一行位于这个页面的第几个插槽。插槽的概念会在稍后提到。</span>1:1:2<span style="font-family: 宋体;">表示这行数据位于第一个文件的第一个页面的第二个插槽。</span></p>
<p>Nextpage<span style="font-family: 宋体;">：</span></p>
<p><span style="font-family: 宋体;">这个参数在页面处于页面链的时候，指示这个页面的下一个页面地址，这个的表达格式是</span> fileid<span style="font-family: 宋体;">：</span>pageid<span style="font-family: 宋体;">，比如：</span>1<span style="font-family: 宋体;">：</span>2<span style="font-family: 宋体;">，请注意一下，这个页面指针并不是完全指向物理磁盘上的页面地址，因为外部碎片的存在！如果是堆表，那么这两个参数会是</span>null<span style="font-family: 宋体;">。</span></p>
<p>objID<span style="font-family: 宋体;">：</span></p>
<p><span style="font-family: 宋体;">在</span>sysobjects <span style="font-family: 宋体;">表内的对应的</span>ID</p>
<p>Lsn<span style="font-family: 宋体;">：</span></p>
<p align="left">Log sequence number <span style="font-family: 宋体;">，日志序列号，他用来记录当这个页面行数据发生改变时的日志记录号，和此前版本的</span>lsn<span style="font-family: 宋体;">，这个对于事务的管理非常重要，他将指示数据是否被回滚，或者被重做。</span></p>
<p align="left">Slotcnt<span style="font-family: 宋体;">：</span></p>
<p align="left"><span style="font-family: 宋体;">页面插槽总数。也就是这个页面有多少行。一个萝卜一个坑，一行数据一个槽。</span></p>
<p align="left">Level<span style="font-family: 宋体;">：</span></p>
<p align="left"><span style="font-family: 宋体;">在索引页中的级别，</span>0<span style="font-family: 宋体;">为子叶节点。</span></p>
<p align="left">Indexed<span style="font-family: 宋体;">：</span></p>
<p align="left">0<span style="font-family: 宋体;">为普通数据页面（堆表），</span>1<span style="font-family: 宋体;">为聚集索引页面，大于</span>1<span style="font-family: 宋体;">都为非聚集索引。</span></p>
<p align="left">Pminlen<span style="font-family: 宋体;">：</span></p>
<p align="left"><span style="font-family: 宋体;">每行数据的固定长度，比如一行数据有</span>3<span style="font-family: 宋体;">个</span>int<span style="font-family: 宋体;">字段，</span>1<span style="font-family: 宋体;">个</span>char5<span style="font-family: 宋体;">的字段，</span>2<span style="font-family: 宋体;">个</span>varchar<span style="font-family: 宋体;">字段，那么固定长度是</span>17.<span style="font-family: 宋体;">这个参数在</span>mssql<span style="font-family: 宋体;">定位字段数据时起到至关重要的作用。</span></p>
<p align="left">freeCnt<span style="font-family: 宋体;">：</span></p>
<p align="left"><span style="font-family: 宋体;">页面空闲的字节数，在每次需要插入数据时就检测这个值，空间是否够用。</span></p>
<p align="left">m_ghostRecCnt<span style="font-family: 宋体;">：</span></p>
<p align="left"><span style="font-family: 宋体;">页面含有的幻影行的数目。幻影行是</span>sql server<span style="font-family: 宋体;">在删除数据时，并不及时删除数据，而是仅仅将他标记为幻影行，并不对磁盘中的数据进行清空。这样做有非常大的好处。如果数据回滚，那么只需要将标记去掉即可。数据库会在空闲的时候将页面进行整理，去掉幻影行，而没有必要即时性的整理页面。</span></p>
<h3>Slot table</h3>
<p><span style="font-family: 宋体;">插槽表是用于记录行在页内的逻辑顺序和物理顺序的对应数组。比如逻辑上是第一行的数据可能在这个页面内是物理上位于第二行。而这个物理上的位置，指的是在这个页面的</span>8KB<span style="font-family: 宋体;">的空间内的位置，</span>slottable<span style="font-family: 宋体;">有记录行的逻辑顺序数，物理顺序数，还有相对页头的偏移量，以便数据查找定位。在这里衍生的一个问题就是，逻辑上的行顺序可能存储在磁盘上的物理顺序也不会是一个顺序！（当然还有可能页面存在</span>lob<span style="font-family: 宋体;">数据，成为一个页指针）</span></p>
<p><span style="font-family: 宋体;">猜想：</span>Slottable<span style="font-family: 宋体;">实际上是对空间的一个利用，当然也涉及到了当数据行进行增删改查时，对页面的破坏，最后在设计上导入了</span>slot table<span style="font-family: 宋体;">。假设一个场景，当一个页面全部被填充满了，</span>freecnt<span style="font-family: 宋体;">为</span>0<span style="font-family: 宋体;">的时候，删除一个数据（页面存储</span>100<span style="font-family: 宋体;">个数据，删除其中的第</span>2<span style="font-family: 宋体;">个），那么如果根据正常的逻辑，应该是将</span>2<span style="font-family: 宋体;">到第</span>100<span style="font-family: 宋体;">行的数据全部移动，然后整理出末尾还剩一行的数据。这样现实吗？那样页面所有数据都要移动，似乎不大现实。所以</span>mssql<span style="font-family: 宋体;">在设计上引入了</span>slot table ,<span style="font-family: 宋体;">这样，物理上和逻辑上的顺序由</span>slot table <span style="font-family: 宋体;">映射起来，存储引擎负责向</span>slot table <span style="font-family: 宋体;">要数据位置，</span>slot table<span style="font-family: 宋体;">负责映射其真正的物理位置，</span>slottable<span style="font-family: 宋体;">在其中搭建起一个桥梁，降低了他们之间的耦合，使得当逻辑顺序发生变化的时候，物理位置却不需要相应的变化，哈哈，相信这个也是一个典型的设计上的解耦的例子吧～～</span></p><img src ="http://www.cnblogs.com/perfectdesign/aggbug/1269926.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41782/" target="_blank">[新闻]谷歌Android SDK软件界面浮现</a>]]></description></item><item><title>推荐一篇非常不错的文章</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/13/1266975.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Wed, 13 Aug 2008 07:21:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/13/1266975.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1266975.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/13/1266975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1266975.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1266975.html</trackback:ping><description><![CDATA[<p><font face="Verdana"><a href="http://technet.microsoft.com/zh-cn/magazine/cc671165.aspx">http://technet.microsoft.com/zh-cn/magazine/cc671165.aspx</a></font>&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<div class="FeatureSmallHead">SQL Server 高效维护数据库的关键技巧 是technet上的，都是些经验之谈。</div>
 <img src ="http://www.cnblogs.com/perfectdesign/aggbug/1266975.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41781/" target="_blank">[新闻]谷歌生活搜索增加“影讯”</a>]]></description></item><item><title>批量删除，批量插入不再烦人！</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/11/sql-server-2008-table-valued-parameters.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Mon, 11 Aug 2008 04:18:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/11/sql-server-2008-table-valued-parameters.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1265096.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/11/sql-server-2008-table-valued-parameters.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1265096.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1265096.html</trackback:ping><description><![CDATA[摘要: 目前的批量删除和批量更新，很是烦人，解决方案无非三种：XML，SQL自定义函数split，和CLR实现split。这几种都比较烦人，代码很多，维护麻烦，很不爽。现在sql2008新增的一个功能，我也不知道中文名怎么翻译，暂且叫他表参数吧。大家可以看看示例：这个就是用户定义的表类型：然后给他定义一个类型：CodeCode highlighting produced by Actipro CodeHi&nbsp;&nbsp;<a href='http://www.cnblogs.com/perfectdesign/archive/2008/08/11/sql-server-2008-table-valued-parameters.html'>阅读全文</a><img src ="http://www.cnblogs.com/perfectdesign/aggbug/1265096.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41780/" target="_blank">[新闻]《电脑报》:《星际争霸2》掘金中国悬疑</a>]]></description></item><item><title>MSSQL优化之 1.1 存储架构之文件和文件组</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_file_and_filegroups.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Fri, 08 Aug 2008 08:22:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_file_and_filegroups.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1263859.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_file_and_filegroups.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1263859.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1263859.html</trackback:ping><description><![CDATA[摘要: 本篇文章将由粗到细，讲解数据库的物理组成结构。有些东西可能是废话或是摘抄自BOL，等权威文章，但是作为一个知识体系结构，还是需要啰嗦一下。还包括了一些性能优化方面的知识。
&nbsp;&nbsp;<a href='http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_file_and_filegroups.html'>阅读全文</a><img src ="http://www.cnblogs.com/perfectdesign/aggbug/1263859.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41779/" target="_blank">[新闻]IBM开发成功22纳米SRAM 更快更节能</a>]]></description></item><item><title>sql server数据库优化教程系列--开篇</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_perfmon_begin.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Fri, 08 Aug 2008 01:50:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_perfmon_begin.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1263460.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_perfmon_begin.html#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1263460.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1263460.html</trackback:ping><description><![CDATA[摘要: 终于决定自己动手写一个了，以前一直是在看别人的文章，也是因为自己的文笔不好，另外也是怕自己被人喷，但是还是鼓足勇气自己写上一个优化系列吧，算是对我这些日子对SQl Server数据库优化工作的一个总结。&nbsp;&nbsp;<a href='http://www.cnblogs.com/perfectdesign/archive/2008/08/08/sql_perfmon_begin.html'>阅读全文</a><img src ="http://www.cnblogs.com/perfectdesign/aggbug/1263460.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41779/" target="_blank">[新闻]IBM开发成功22纳米SRAM 更快更节能</a>]]></description></item><item><title>再论一下in,exists,join</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/06/sql_exists_in.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Wed, 06 Aug 2008 01:04:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/06/sql_exists_in.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1261630.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/06/sql_exists_in.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1261630.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1261630.html</trackback:ping><description><![CDATA[<p><a title="SQL优化--使用 EXISTS 代替 IN 和 关联查询（inner join) &#13;&#10;" href="http://www.cnblogs.com/zping/archive/2008/08/05/1260959.html">SQL优化--使用 EXISTS 代替 IN 和 关联查询（inner join) </a>昨天的这篇文章提及到的一些问题，在这里我做一下自己的测试，测试结果以微软标准Adventureworks数据库内数据结构为准。</p>
<p>&nbsp;</p>
<p>测试语句：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_085559" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_085559').style.display='none'; document.getElementById('Code_Open_Image_085559').style.display='inline'; document.getElementById('Code_Open_Text_085559').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_085559" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_085559').style.display='none'; getElementById('Code_Closed_Image_085559').style.display='inline'; getElementById('Code_Closed_Text_085559').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_085559">Code</span><span id="Code_Open_Text_085559" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">statistics</span><span style="color: #000000">&nbsp;io&nbsp;</span><span style="color: #0000ff">on</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">statistics</span><span style="color: #000000">&nbsp;time&nbsp;</span><span style="color: #0000ff">on</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;a.</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;Production.Product&nbsp;a&nbsp;</span><span style="color: #0000ff">inner</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">join</span><span style="color: #000000">&nbsp;Production.ProductModel&nbsp;b<br />
</span><span style="color: #0000ff">on</span><span style="color: #000000">&nbsp;(a.ProductModelID&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;b.ProductModelID)<br />
<br />
</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;a.</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;Production.Product&nbsp;a&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">exists</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">X</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;Production.ProductModel&nbsp;b<br />
</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;a.ProductModelID&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;b.ProductModelID)<br />
<br />
</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;a.</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;Production.Product&nbsp;a&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;a.ProductModelID&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;b.ProductModelID&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;Production.ProductModel&nbsp;b)<br />
</span></span></div>
<p>&nbsp;</p>
<p>测试统计：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_085843" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_085843').style.display='none'; document.getElementById('Code_Open_Image_085843').style.display='inline'; document.getElementById('Code_Open_Text_085843').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_085843" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_085843').style.display='none'; getElementById('Code_Closed_Image_085843').style.display='inline'; getElementById('Code_Closed_Text_085843').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_085843">Code</span><span id="Code_Open_Text_085843" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">SQL&nbsp;Server&nbsp;分析和编译时间:&nbsp;<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;毫秒。<br />
<br />
SQL&nbsp;Server&nbsp;执行时间:<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;毫秒。<br />
SQL&nbsp;Server&nbsp;分析和编译时间:&nbsp;<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">15</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">63</span><span style="color: #000000">&nbsp;毫秒。<br />
<br />
SQL&nbsp;Server&nbsp;执行时间:<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;毫秒。<br />
<br />
SQL&nbsp;Server&nbsp;执行时间:<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;毫秒。<br />
<br />
(</span><span style="font-weight: bold; color: #800000">9440</span><span style="color: #000000">&nbsp;行受影响)<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Worktable</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Product</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">474</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">ProductModel</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
<br />
(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;行受影响)<br />
<br />
SQL&nbsp;Server&nbsp;执行时间:<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">63</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1984</span><span style="color: #000000">&nbsp;毫秒。<br />
<br />
(</span><span style="font-weight: bold; color: #800000">9440</span><span style="color: #000000">&nbsp;行受影响)<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Worktable</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Product</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">474</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">ProductModel</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
<br />
(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;行受影响)<br />
<br />
SQL&nbsp;Server&nbsp;执行时间:<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">78</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1780</span><span style="color: #000000">&nbsp;毫秒。<br />
<br />
(</span><span style="font-weight: bold; color: #800000">9440</span><span style="color: #000000">&nbsp;行受影响)<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Worktable</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Product</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">474</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
表&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">ProductModel</span><span style="color: #ff0000">'</span><span style="color: #000000">。扫描计数&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">，逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">&nbsp;次，物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;逻辑读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;物理读取&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次，lob&nbsp;预读&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;次。<br />
<br />
(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;行受影响)<br />
<br />
SQL&nbsp;Server&nbsp;执行时间:<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">109</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1366</span><span style="color: #000000">&nbsp;毫秒。<br />
SQL&nbsp;Server&nbsp;分析和编译时间:&nbsp;<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;毫秒。<br />
<br />
SQL&nbsp;Server&nbsp;执行时间:<br />
&nbsp;&nbsp;&nbsp;CPU&nbsp;时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;毫秒，占用时间&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;毫秒。<br />
</span></span></div>
<p>&nbsp;</p>
<p>执行计划</p>
<p><img height="445" alt="" src="http://www.cnblogs.com/images/cnblogs_com/perfectdesign/sql1.jpg" width="1128" border="0" /></p>
<p><img height="123" alt="" src="http://www.cnblogs.com/images/cnblogs_com/perfectdesign/sql2.jpg" width="991" border="0" /></p>
<p>&nbsp;</p>
<p>可以看到无论是查询计划还是统计IO，都是一样的。</p>
<p>这都是优化器的功劳，并不存在哪个谓词就好些，除非你的测试环境是2000以下。</p>
<p>&nbsp;</p>
 <img src ="http://www.cnblogs.com/perfectdesign/aggbug/1261630.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41778/" target="_blank">[新闻]Windows 7 Server将被命名为Windows Server 2008 R2</a>]]></description></item><item><title>sql优化实战：排序字段——到底是time还是ID</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/08/01/1258145.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Fri, 01 Aug 2008 06:15:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/08/01/1258145.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1258145.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/08/01/1258145.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1258145.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1258145.html</trackback:ping><description><![CDATA[<p>查到有这样一段话，很耗CPU资源：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_140723" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_140723').style.display='none'; document.getElementById('Code_Open_Image_140723').style.display='inline'; document.getElementById('Code_Open_Text_140723').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_140723" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_140723').style.display='none'; getElementById('Code_Closed_Image_140723').style.display='inline'; getElementById('Code_Closed_Text_140723').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_140723">Code</span><span id="Code_Open_Text_140723" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">statistics</span><span style="color: #000000">&nbsp;io&nbsp;</span><span style="color: #0000ff">on</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">statistics</span><span style="color: #000000">&nbsp;time&nbsp;</span><span style="color: #0000ff">on</span><span style="color: #000000">&nbsp;<br />
&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="font-weight: bold; color: #800000">10</span><span style="color: #000000">&nbsp;FeedBackID,UserID,ContentID,</span><span style="color: #ff0000">[</span><span style="color: #ff0000">Content</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;Time,AddType,IP&nbsp;&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;CYZoneFeedBack&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;contentid&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;articleid&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;cyzonearticle&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;userid</span><span style="color: #808080">=</span><span style="color: #008000">@user</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;delflag</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;publishtype</span><span style="color: #808080">&lt;&gt;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">b</span><span style="color: #ff0000">'</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;CYZoneFeedBack.DelFlag&nbsp;</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</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;CYZoneFeedBack.Time&nbsp;</span><span style="color: #0000ff">desc</span></span></div>
<p>&nbsp;</p>
<p>分析是这样的：</p>
<p><img height="185" alt="" src="http://www.cnblogs.com/images/cnblogs_com/perfectdesign/sta1.jpg" width="759" border="0" /></p>
<p>&nbsp;</p>
<p>原来是排序造成了这么多开销。罪魁祸首在于 <font face="Verdana">order by CYZoneFeedBack.Time</font> 这句话，后改成：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_141027" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_141027').style.display='none'; document.getElementById('Code_Open_Image_141027').style.display='inline'; document.getElementById('Code_Open_Text_141027').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_141027" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_141027').style.display='none'; getElementById('Code_Closed_Image_141027').style.display='inline'; getElementById('Code_Closed_Text_141027').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_141027">Code</span><span id="Code_Open_Text_141027" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">statistics</span><span style="color: #000000">&nbsp;io&nbsp;</span><span style="color: #0000ff">on</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">statistics</span><span style="color: #000000">&nbsp;time&nbsp;</span><span style="color: #0000ff">on</span><span style="color: #000000">&nbsp;<br />
&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="font-weight: bold; color: #800000">10</span><span style="color: #000000">&nbsp;FeedBackID,UserID,ContentID,</span><span style="color: #ff0000">[</span><span style="color: #ff0000">Content</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;Time,AddType,IP&nbsp;&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;CYZoneFeedBack&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;contentid&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;articleid&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;cyzonearticle&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;userid</span><span style="color: #808080">=</span><span style="color: #000000">107</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;delflag</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;publishtype</span><span style="color: #808080">&lt;&gt;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">b</span><span style="color: #ff0000">'</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;CYZoneFeedBack.DelFlag&nbsp;</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</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;CYZoneFeedBack.feedbackid&nbsp;</span><span style="color: #0000ff">desc</span></span></div>
<p>&nbsp;</p>
<p>执行计划变为：</p>
<p><img height="208" alt="" src="http://www.cnblogs.com/images/cnblogs_com/perfectdesign/sta2.jpg" width="702" border="0" /></p>
<p>&nbsp;</p>
<p>很明显省掉了排序的操作。有时候，排序和时间是有相关性的，而聚集索引，没有建在时间上，会导致排序成本的增加，恰当的利用自增ID来做时间排序，也能省掉很多开销。</p>
<img src ="http://www.cnblogs.com/perfectdesign/aggbug/1258145.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41775/" target="_blank">[新闻]2008年8月19日IT博客精选</a>]]></description></item><item><title>关于前阵子数据库链接经常性连接失败的原因</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/07/31/1257437.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Thu, 31 Jul 2008 09:04:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/07/31/1257437.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1257437.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/07/31/1257437.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1257437.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1257437.html</trackback:ping><description><![CDATA[<p>前一篇post经常性登录失败问题，<font face="Verdana"><a href="http://www.cnblogs.com/perfectdesign/archive/2008/06/24/sql_login_problem.html">http://www.cnblogs.com/perfectdesign/archive/2008/06/24/sql_login_problem.html</a></font></p>
<p>目前已经没有了，我总结了一下，问题应该是出现在连接串内使用了持久化安全性和windows验证这2个选项，这个选项导致在有其他应用程序在审核失败后，其安全性可能又被数据库延续了下来，所以导致失败。在修改连接串后数据库恢复正常。</p>
<img src ="http://www.cnblogs.com/perfectdesign/aggbug/1257437.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41774/" target="_blank">[新闻]Facebook成为美国四大电视台争夺观众阵地</a>]]></description></item><item><title>在数据库内快速查找字符串</title><link>http://www.cnblogs.com/perfectdesign/archive/2008/07/31/qickfindstringinDB.html</link><dc:creator>PerfectDesign</dc:creator><author>PerfectDesign</author><pubDate>Thu, 31 Jul 2008 08:58:00 GMT</pubDate><guid>http://www.cnblogs.com/perfectdesign/archive/2008/07/31/qickfindstringinDB.html</guid><wfw:comment>http://www.cnblogs.com/perfectdesign/comments/1257430.html</wfw:comment><comments>http://www.cnblogs.com/perfectdesign/archive/2008/07/31/qickfindstringinDB.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/perfectdesign/comments/commentRss/1257430.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/perfectdesign/services/trackbacks/1257430.html</trackback:ping><description><![CDATA[<p>方法一，是我自己经常用到的：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_165548" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_165548').style.display='none'; document.getElementById('Code_Open_Image_165548').style.display='inline'; document.getElementById('Code_Open_Text_165548').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_165548" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_165548').style.display='none'; getElementById('Code_Closed_Image_165548').style.display='inline'; getElementById('Code_Closed_Text_165548').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_165548">Code</span><span id="Code_Open_Text_165548" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;a.name,b.</span><span style="color: #0000ff">text</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;sys.sysobjects&nbsp;a&nbsp;</span><span style="color: #0000ff">inner</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">join</span><span style="color: #000000">&nbsp;syscomments&nbsp;b<br />
</span><span style="color: #0000ff">on</span><span style="color: #000000">&nbsp;a.id&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;b.id&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;b.</span><span style="color: #0000ff">text</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">%你要找的字符串%</span><span style="color: #ff0000">'</span></span></div>
<p>&nbsp;</p>
<p>方法二：</p>
<p>刚在外文资料上看到的：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_165645" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_165645').style.display='none'; document.getElementById('Code_Open_Image_165645').style.display='inline'; document.getElementById('Code_Open_Text_165645').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_165645" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_165645').style.display='none'; getElementById('Code_Closed_Image_165645').style.display='inline'; getElementById('Code_Closed_Text_165645').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_165645">Code</span><span id="Code_Open_Text_165645" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">--</span><span style="color: #008080">Declare&nbsp;whatever&nbsp;you&nbsp;can&nbsp;:)</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">Declare</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@SString</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">nvarchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">Declare</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@getdbname</span><span style="color: #000000">&nbsp;sysname<br />
</span><span style="color: #0000ff">Declare</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sqlstm</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">nvarchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">Declare</span><span style="color: #000000">&nbsp;dbname&nbsp;</span><span style="color: #0000ff">cursor</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">get&nbsp;all&nbsp;the&nbsp;names&nbsp;of&nbsp;the&nbsp;Databases&nbsp;in&nbsp;order&nbsp;by&nbsp;name</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">Select</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">[</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #000000">name</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">]</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;master.dbo.sysdatabases&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;name&nbsp;<br />
</span><span style="color: #0000ff">open</span><span style="color: #000000">&nbsp;dbname<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">Get&nbsp;the&nbsp;first&nbsp;Name</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">FETCH</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NEXT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;dbname&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@getdbname</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">WHILE</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #008000">@@FETCH_STATUS</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">set&nbsp;the&nbsp;search&nbsp;string</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@SString</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&lt;Place&nbsp;the&nbsp;String&nbsp;Here&gt;</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">append&nbsp;the&nbsp;search&nbsp;pattern</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@SString</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">%</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@SString</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">%</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">set&nbsp;the&nbsp;statement&nbsp;to&nbsp;define&nbsp;the&nbsp;search&nbsp;condition,&nbsp;with&nbsp;variables</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sqlstm</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000"><br />
Select&nbsp;Specific_Catalog&nbsp;as&nbsp;Database_Name,&nbsp;Routine_Name&nbsp;as&nbsp;</span><span style="color: #ff0000">''</span><span style="color: #ff0000">Stored&nbsp;Procedure&nbsp;Name</span><span style="color: #ff0000">''</span><span style="color: #ff0000">,Routine_Definition&nbsp;<br />
From&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@getdbname</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">.Information_Schema.Routines&nbsp;<br />
Where&nbsp;PatIndex(</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #ff0000">''''</span><span style="color: #808080">+</span><span style="color: #008000">@SString</span><span style="color: #808080">+</span><span style="color: #ff0000">''''</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">,&nbsp;Routine_Definition)&nbsp;&gt;&nbsp;0</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">Execute&nbsp;the&nbsp;Query</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;(</span><span style="color: #008000">@sqlstm</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">FETCH</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NEXT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;dbname&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@getdbname</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">END</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">Close&nbsp;the&nbsp;Cursor&nbsp;and&nbsp;Deallocate&nbsp;it&nbsp;from&nbsp;memory</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">Close</span><span style="color: #000000">&nbsp;dbname<br />
</span><span style="color: #0000ff">Deallocate</span><span style="color: #000000">&nbsp;dbname&nbsp;<br />
<br />
</span></span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>（出处：<font face="Verdana"><a href="http://www.sqlservercentral.com/scripts/Search/63397/">http://www.sqlservercentral.com/scripts/Search/63397/</a></font>）</p>
<p>&nbsp;</p>
<p>第二个用的cursor查找，所有库的，二者范围不一样。</p>
<p>供大家急需时参考。</p>
<img src ="http://www.cnblogs.com/perfectdesign/aggbug/1257430.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41774/" target="_blank">[新闻]Facebook成为美国四大电视台争夺观众阵地</a>]]></description></item></channel></rss>