数据库规范及优化
1:所有的存储过程都应在开始时设置
set nocount on --去掉受影响的行数
set transaction isolation level read uncommitted --事务级别
set xact_abort on
2.尽量使用表变量来代替临时表。SQL Server 2000以上版本中,表变量大大优于临时表。
3:不要过多使用触发器,尽量不能使用触发器,这会导致数据库难以维护。
4:索引原则
规则1:创建索引必须有明确的使用目的,不允许创建无用的索引。
规则2:频繁更新的字段不创建Clustered索引。
规则3:索引字段不宜过多。对所选的每一列,可指出索引是按升序还是降序组织列值。
规则4:不要在过长的字符型列上建立索引,如长度超过50的varchar字段。
这可以避免索引占用过多的空间。
规则5:在不同的设备上创建文件或文件组,并将索引和表分别建在不同的文件组上。
规则6:不需要将聚集主键字段建在任何非聚集索引中。
规则7:频繁更新的索引应该每天使用 dbcc indexdefrag 工具整理索引碎片
性能规则
1:为了提高性能,应优先使用连接,然后使用子查询或嵌套查询。
2:避免对where子句中的字段使用函数。避免对where子句中的字段进行计算。
3:尽量使用where子句替换having子句,having只对统计结果进行过滤。
4:在长度允许范围内,使用integer代替numeric
5:用case语句合并多重表扫描
6:对于比较复杂的语句,或者涉及数据量较大的表的语句,可以通过做查询计划检测、调整语句性能。
7:like子句尽量前端匹配。
8:尽量不使用 "<>"
9:分解复杂查询,用常量代替变量