企业数据对企业具有着非常重要的作用,它直接关系着企业发展的过去和未来。SQL Server作为数据库平台服务的提供者,如何可以提供稳定的性能,是当前企业用户提出的比较多的要求。接下来,我们将介绍如何在数据库设计阶段进行合理的设计,以达到提升性能的作用。
1、不要使用游标:
使用游标不仅占用内存,而且还用不可思议的方式锁定表,它们可以使DBA所能做的一切性能优化等于没做。游标里每执行一次fetch就等于执行一次select。
2、创建适当的索引:
每当为一个表添加一个索引,select会更快,可insert和delete却大大变慢,因为创建了维护索引需要许多额外的工作。其中需要注意的是,采用函数处理的字段不能利用索引
,条件内包括了多个本表的字段运算时不能进行索引。
3、小心死锁:
按照一定的次序来访问你的表。如果你先锁住表A,再锁住表B,那么在所有的存储过程中都要按照这个顺序来锁定它们。 如果某个存储过程先锁定表B,再锁定表A,这可能会导致一个死锁。
4、不要使用服务器端游标:
与服务器端游标比起来,客户端游标可以减少服务器和网络的系统开销,并且还减少锁定时间。
5、不要忽略同时修改同一记录的问题:
有时候,两个用户会同时修改同一记录,这样,后一个修改者修改了前一个修改者的操作,某些更新就会丢失。处理这种情况,创建一个timestamp字段,在写入前检查它,如果允许,就合并修改,如果存在冲突,提示用户。
6、尽量不要使用text数据类型:
除非使用text处理一个很大的数据,否则不要使用它。因为它不易于查询,速度慢,用的不好还会浪费大量的空间。一般varchar可以更好的处理数据。
7、避免在索引列上使用计算:
where子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。例如:
l (低效)select ... from
[dept] where [sal]*12>25000
l (高效)select ... from
[dept] where [sal]>25000/12
8、不同类型的索引效能是不一样的,应尽可能先使用效能高的索引:
数字类型的索引查找效率高于字符串类型,定长字符串char、nchar的索引效率高于变长字符串varchar、nvarchar的索引。
l (低效)select ... from
tableName where username='张三' and age>=21
l (高效)select ... from
tableName where age>=21 and username='张三'