文章分类 - SQL
写有效率的SQL查询(II)
摘要:上回我们说到评估一条语句执行效率主要看逻辑IO(啥是逻辑IO,啥是物理IO见联机文档),这次我们继续。 我们先说说,返回多行结果时,为什么SQLServer有时会选择index seek,有时会选择index scan。 以nonclustered index为例说明。 像所有的索引B树一样,非聚集索引树也包括完全由索引数据组成的根节点和中间级节点;但是和聚集索引树不同的是,聚集索引树叶节点包含的...
阅读全文
写有效率的SQL查询(I)
摘要:大型系统的生产环境,一般情况下,我们评价一条查询是否有效率,更多的是关注逻辑IO(至于为什么,回头补一篇)。我们常说,“要建彪悍的索引”、“要写高效的SQL”,其实最终目的就是在相同结果集情况下,尽可能减少逻辑IO。 1.1 where条件的列上都得有统计信息。 没统计信息SQLServer就无法估算不同查询计划开销优劣,而只能采用最稳妥的Scan(不管是table scan还是clus...
阅读全文
写有效率的SQL查询(III)
摘要:先说说这些误区。所谓“误区”,有一些是新手很容易犯的错误或者很容易忽略的问题,另外一些,则是像“耗子吃了盐会变成蝙蝠”一样,让我们从小就认为是正确的事情。如下: 1、 表上不管用得着用不着,都加个聚集索引。 我们知道,表以两种方式组织物理存储:有聚集索引的“聚集表”;没有聚集索引的“堆”。在聚集表中,数据行按照聚集索引的顺序存储(这也是为啥一张表最多只能有一个聚集索引的原因);堆中,数据行的存储可...
阅读全文
sql2005导入导出存储过程
摘要:1. 可以用脚本备份 manger studio--右键你的数据库--任务--生成脚本 在脚本生成向导的"选择对象类型"步骤中, 将"存储过程"选上, 在接下来的"选择存储过程"的步骤中, 选择所有的存储过程(或者你要复制的存储过程) 完成后, 所有存储过程的脚本会生成在一个新的查询窗口中, 关掉生成脚本向导, 在生成的存储过程脚本的...
阅读全文
union的一点用处--合并两个表中的相同字段在一个表中显示出来(区别于select a.title,b.title from a,b)
摘要:select Title,PubDate from ProductProvide union select Title,PubDate from ProductStock order by PubDate --orderby 的作用是使用另外一个字段把两个表中的顺序打乱,使之不能明显看出来是两个表的简单堆砌
阅读全文
浙公网安备 33010602011771号