织梦CMS - 轻松建站从此开始!

罗索

SQL Server 优化终极指南

罗索客 发布于 2001-11-11 15:27 点击:次 
本文从数据库设计、索引设计等多方面介绍优化SQL Server的方法,其中有大量实用技巧。 二、数据库设计优化(1月31日) 数据库的设计,包括表与表之间的关系,对SQL Server的性能和可伸缩性非常重要。甚至可以说,数据库设计成功了,整个系统也就成功了一半;数据库设计得
TAG:

本文从数据库设计、索引设计等多方面介绍优化SQL Server的方法,其中有大量实用技巧。

二、数据库设计优化(1月31日)

  数据库的设计,包括表与表之间的关系,对SQL Server的性能和可伸缩性非常重要。甚至可以说,数据库设计成功了,整个系统也就成功了一半;数据库设计得不好,系统的性能必将在一个低水平上,而且很难通过后期的工作来弥补。所以应该拉长数据库设计的时间,详细周密谨慎地考虑问题,务必使数据库设计尽善尽美。下面是数据库设计的一些要诀:

遵循范式来进行数据库设计。至少要达到第二范式的要求。遵循范式设计,可以使数据库的冗余最小,提高数据库的性能。当然,也不要过于死板,如果当一个查询可能需要用到3个或更多的表连接,或是连接中的表数据量非常大时,使用表连接会非常影响性能;此时都可以适当合并一些表,减少或消除表连接。比如查询
SELECT n.*, b.body, c.categoryName, u.nick FROM tbNews n INNER JOIN tbBody b ON n.newsID=b.textID INNER JOIN tbCategory c ON n.categoryID=c.categoryID INNER JOIN tbUser u ON n.userID=t.userID WHERE n.newsID=13523

用到了四个表连接,速度不可能快。
使用大的数据库。对于同一个应用系统,不要因为表多而建立多个数据库。SQL Server为每个数据库都建立一个缓冲系统,对于同一个查询,如果跨数据库,SQL Server将在每个数据库的缓冲区里都缓存这个数据库;如果使用一个数据库,将只有一份缓存,大大节约了数据库的空间。
使用窄表。窄表可以使排序和索引更加快速。记住,无论如何,不要使表的宽度超过8160个字节。SQL Server内部页的长度是8160个字节,如果表的宽度超过这个数字,表的每行数据就将跨多个页,大大增加了系统处理的复杂度,使系统性能成倍下降。
选择合适的数据类型。选择占空间最小的数据类型。比如,字段tbType中只会存储从0到30的整型数据,就应该用TINYINT,而用INT类型就有点浪费。如果要在一个字段中存储超过255而又少于8000个字符的数据,应该使用VARCHAR而不要使用TEXT类型;SQL Server要对TEXT类型进行额外的处理,降低系统性能。
  有些人喜欢用CHAR或VARCHAR来保存数值数据,笔者认为这不是一个好习惯;INT等数值类型和CHAR等字符类型相比,无论是在空间和检索速度、索引速度上都要优越;为了小小的代码上的方便而舍弃了性能,不可取。

谨慎使用Trigger。Trigger非常有用,但它是一把双刃剑,用得不好会极大影响系统的性能;因为当每次在表上进行插入、更新或删除操作时,Trigger都会运行;如果Trigger非常耗时或耗用大量的内存,将成为系统性能的一个瓶颈。所以要尽可能的优化Trigger:减少代码中引用表的数目,减少Trigger中代码影响的记录行数。 (jacky)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200111/1593.html]
本文出处: 作者:jacky
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容