SQL Server数据库设计的原则
好的数据库设计可以提高数据库的性能.在设计数据库时考虑以下原则可以提高性能.
a. 使用非规范化数据库
1)规范化的数据库可防止数据存在功能相关性,以便轻松、高效地更新数据库。但是,查询数据库时可能需要联接许多表来组合信息。随着联接表数目的增多,查询运行时间会大大增加。因此,规范化的数据库并不一定是最佳的选择。通常,如果有相当多的查询需要联接五个或六个以上的表,则应考虑使用非规范化数据库。
2)此外对一些使用统计函数计算后的值,计算后存储起来,可以节省大量查询时间,但是使用此方法时需要在表中多维护一列。
b. 采用可变长度列还是固定长度列
与固定长度列相比,可变长度列的缺点是一些操作的效率不高。例如,如果可变长度列开始时很小,而某 UPDATE 子句使其显著增大,则可能就要重新定位记录。此外,频繁的更新会导致数据页随着时间推移变得比较零碎。因此,在数据长度变化不大并且需要频繁进行更新时,建议使用固定长度列。
c. 创建长度较小的行
页中可容纳的行数取决于各行的紧凑程度。如果行较小,则页中可以容纳更多的行。因此,对行较为紧凑的表执行的单磁盘操作可以检索更多的行,从而使操作更为有效。此外,存储引擎缓存中也可以包含更多的行,而这可能会提高命中率。使用紧凑的行还可以防止浪费数据页上的空间。使用较大的行时,通常就会有这种浪费情况。
1)使操作更为有效
2)提高命中率
假设您有一个表,其中某些列具有非常稳定的值,而其他列的值更改非常频繁。那么,将这个表拆分为两个表(一个表包含频繁引用的列,另一个表包含稳定的列)是很有意义的。通过创建两个表,即可拥有长度较小的行的所有优点。但缺点是需要使用联接来组合信息。
d. 使用长度较小的键
具有一个或少数几个键列的索引称为窄索引。具有许多键列的索引称为宽索引。宽索引的键长度通常较大。一个极端的索引示例是包括表中的所有列。通过创建这样的索引,可以有效地制作原始表的副本。不过,在数据库大小和查询性能方面,这种做法的效率都十分低下。
1)较小的索引键占用的空间更小,并且更为有效。
2)使用长度变化不大,紧凑的主键十分有用.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/0_net/archive/2008/09/01/2862143.aspx