2010-01-26 86 views
7

我问在计算器这个问题,因为它的正确的地方要问...提示和技巧有关查询优化[SQL服务器2005]

我知道它 非常广阔的话题开始,但一些小的这可能是非常方便的...

这可能是年轻的开发人员喜欢我了解查询优化有用..

一些提示和技巧在SQL Server中的查询优化 2005 ..

回答

2

基于此

  • 避免类型优先级问题(比如总是很像一样,包括VARCHAR等长)

...WHERE tinyintcol = @intvalue 
means a conversion of the column and invalidates an index 
...WHERE tinyintcol = @tinyintvalue 
  • 避免功能上WHERE子句中的列

...WHERE DATEADD(day, 1, MyCol) > GETDATE() 
should be 
...WHERE MyCol > DATEADD(day, -1, GETDATE()) 
  • 覆盖索引

  • 的GUID:没有聚集索引

1

如果您的查询速度较慢,最明显的地方就是确保它使用索引。

+0

管理工作室,运行命令** set showplan_all on **然后运行您的查询。他们的查询不会运行,但执行计划将被丢弃。在这个输出中查找单词* scan *,这是索引没有被使用的地方。 – 2010-01-26 16:40:34

1
  • 尽量减少你的总人数的加入,如果可能的
  • Ç onsider在查询中使用的表大小
  • 使用索引,因为他们是你的朋友
  • 当心你正在使用的键(INT为int是不是两个VARCHAR处理更容易比较)
  • 避免使用'的类型像”查询在可能情况下尽量获取值使用第一
1

对于查询的平等,我可以添加到gbnrecursivesmaclell以下内容:

  • 尽量减少子查询,连接
  • 避免任何excessing lockings,节省检查站
  • 使用编译指示设置临时表创建在内存
  • 使用编译指示设置同步OFF
  • 使用编译指示禁止触发器(如果可能)
  • 嵌入INSERTDELETE查询在交易
  • 有时UPDATE是多个记录的不仅仅是再次插入他们慢。所以建议是选择,DELETE,不是编程方式更新记录,并重新插入与现有键(注意CASCADETRIGGERS
  • 检查你的系统管理者是DB的缓存应为开