Sql server 2005 关于查询优化的提示和技巧[SQL Server 2005]
我在stackoverflow中问这个问题是因为它是一个正确的提问地点 我知道这是一个 这是一个非常宽泛的话题,但有些小话题可能真的很方便 对于像我这样的年轻开发人员来说,了解查询优化可能会很有用Sql server 2005 关于查询优化的提示和技巧[SQL Server 2005],sql-server-2005,optimization,Sql Server 2005,Optimization,我在stackoverflow中问这个问题是因为它是一个正确的提问地点 我知道这是一个 这是一个非常宽泛的话题,但有些小话题可能真的很方便 对于像我这样的年轻开发人员来说,了解查询优化可能会很有用 关于SQL Server 2005中的查询优化的一些提示和技巧。如果查询速度慢,最明显的出发点是确保它使用索引。基于这里的问题 避免数据类型优先(例如,总是非常相似,包括varchar的长度等) 乙二醇 避免WHERE子句中列上的函数 乙二醇 覆盖指数 GUID:不是聚集索引 尽可能减少连
关于SQL Server 2005中的查询优化的一些提示和技巧。如果查询速度慢,最明显的出发点是确保它使用索引。基于这里的问题
- 避免数据类型优先(例如,总是非常相似,包括varchar的长度等)
- 避免WHERE子句中列上的函数
- 覆盖指数
- GUID:不是聚集索引
- 尽可能减少连接的总数
- 考虑查询中使用的表大小
- 使用索引,因为它们是您的朋友
- 注意用作键的类型(int-to-int比两个varchar更容易比较)
- 在可能的情况下,避免使用“Like”查询,首先尝试使用等式获取值
gbn
、recursive
和smaclell
中,如下所示:
- 尽量减少子查询、连接
- 避免任何过度锁定,节省检查点
- 使用pragmas在内存中设置临时表创建
- 使用pragmas设置同步关闭
- 使用pragmas禁用触发器(如果可能)
- 在事务中嵌入
和INSERT
查询DELETE
- 有时,对于多个记录而言,
比再次插入记录要慢。因此建议选择、删除,而不是以编程方式更新记录并使用现有键重新插入(注意更新
和级联
)触发器
- 请与系统管理员确认数据库缓存应处于打开状态
...WHERE tinyintcol = @intvalue
means a conversion of the column and invalidates an index
...WHERE tinyintcol = @tinyintvalue
...WHERE DATEADD(day, 1, MyCol) > GETDATE()
should be
...WHERE MyCol > DATEADD(day, -1, GETDATE())