摘自:http://blog.sina.com.cn/s/blog_4bbd0b93010007gb.html
一.数据库设计必须注意的原则
数据库的逻辑设计,包括表和表之间的关系是优化数据库性能的核心。一个好的数据库设计不但可以提高数据库本身的效能,而且还可以使应用程序变得简单,为良好的程序开发打下一个良好的基础。
我不想在本来就不好的精力中考虑太多范式的问题,何况,我从来就不认为完全符合范式的数据库设计是成功的!但是,我们还是要尽量的去多用小表(就是列不要太多的表),不要用太多列的长数据库大表。
还有,最好要有一个主线作为整个数据库的贯穿,就好像一篇文章一样,一定要有一个主线一样。这样,我们就不会因为过多的过复杂的连接关系,从而降低服务器的性能。
上面做法的好处是:
由于自小表的列比较少,所以我们在使用排序和建立索引的时候会更为高效。
也正是由于我们把原本比较大的表,划列成多个小表,这就使多簇索引变得更有可能。
也正是由于小表的分裂,使索引变得更狭窄和更紧凑。
由于小表,我们需要建立的针对这个表的索引就会相对较少一些,所以,间接的降低了对数据库操作的开销,而对于那些只要把Select优化好就万事大吉的程序员们来说,也许是一个不错的好消息,因为毕竟Insert,Update和Delete语句有时候也会对系统产生很大的影响(比如说:这个表的索引很多的情况下)。
建立良好的主外键关系,由于主外键关系是有比较严格的要求,所以,很多DB设计的没有主外键关系,这样当然方便设计,也方便开发,但是却会损失一些效能。
二.我是如何看待索引的(前面讲什么都没有离开索引,所以我们还是要好好认识一下索引)
关于索引,从我上大学的时候几乎每个老师讲到索引的时候都会用书目来做讲解,好,我也是俗人一个,那我也用书来做例子吧!为什么每本书都会有一个目录呢?答案很简单,也很明确,那就是为了提高查阅的速度。因为有了目录,所以我们不需要知道每一页写的是什么就可以轻而易举的知道我们要找的内容,但是,我们要为此多付几张纸钱!索引也是一样的道理,索引是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。SQL Server中的索引记录了表中的关键字,提供了指向表中行的指针。这种物理结构提供了一种以一列或多列的值为基础迅速查找表中行的能力。索引是针对一个表建立的,它是由除存放表的数据页面以外的索引页面组成的。每个索引页面中的行都含有逻辑指针(指向表中的行),以便加速检索物理数据。索引可是创建在一列上,也可以创建在多列的组合上,当然,也可以在数据库表的多个列上建立不同的索引。
知道了索引是概念,那么我们就要将目光放在如何设计索引了,以及使用索引的时候应该注意什么?