mssql性能优化的七点认识


1.尽量少使用外键和触发器

因为在mssql中这些功能的性能做得不是很好;随便动一下表,在后台消耗资源大.宁可在前台多写些相关表的操作的代码.

2.创建索引

a.聚集索引:聚集索引是磁盘存储和逻辑显示是一样的,mssql表的主键一般是聚集索引。

b.非聚集索引:非聚集索引是在外面建立小的附加表(一种树形结构;大多数是B或B+树);不要给类似性别列创建索引.

3.死锁

是指有线程在读一条记录;别的线程读这条记录就要等待,在mssql中只要长期占那条记录的线程去掉,死锁就会解除。经常产生锁的原因有:a.在sql语句中使用事务语句。b.在前台的应用程序的connetion冲突。c.多表联合查询。

mssql性能优化的七点认识

4.sql语句优化

a."is null" "not" "or" "in"不会用索引

b.避免在索引列上使用计算或函数处理(索引会大失性能).还有"%";有的甚至会全失索引性能

c.SELECT中避免使用 * (宁可把需要字段列出来;而不要用*去把所有的字段都列出来).

d.避免相关子查询(select中套select).

e.where的条件中"=>exists>in"(指性能)

f."order by" "group by" "having" "distinct"等语句要慎用(因为它们效率不高;它们是先把数据到临时表中再进行处理的).

g.聚集索引如有2个字段组成(tt1和tt2);tt1在前面;where的条件中如只用tt1字段来判断;就会用到一半的聚集索引;

where的条件中如tt1和tt2字段都用来判断了;就会全用到聚集索引;

where的条件中如只用tt2字段来判断;就会用不到聚集索引了;

5.尽量不要使用TEXT数据类型

除非你使用TEXT处理一个很大的数据,否则不要使用它因为它不易于查询,速度慢,用的不好还会浪费大量的空间,一般的,VARCHAR可以更好的处理你的数据。

6.尽量不要使用临时表

除非你必须这样做一般使用子查询可以代替临时表使用临时表会带来系统开销,如果前台的代码你是使用数据库连接池而临时表却自始至终都存在SQL Server提供了一些替代方案,比如Table数据类型。

7.尽量少使用游标

原因很简单;就是游标的算法是最原始的计算机算法(和for.if等语句一样,一条条搜索来算;效率极低);而sql语句用的是集合运算;速度则快的多;如果用索引速度则很快(用了指针)。