日期:2014-05-16  浏览次数:20435 次

DB2数据库设计笔记
    昨天听了牛人讲了DB2数据库表设计的几个东西,现在把它总结下来。同时发现,这个知识啊,如果基础知识打牢,融会贯通后,是一件非常简单而且快乐的事。
     一、数据库表设计的重要性
     此问题不用强调了,就像地球人都知道地球是圆的,程序员都知道数据库表的设计很重要。数据表的设计直接影响这程序的性能,业务可扩展性
     等等。所以一开始的数据库表设计更为重要。像地基一样。
     数据库设计中有一种叫新奥尔良法。需求分析-->概要设计-->逻辑结构设计-->物理设计。
     二、数据库设计注意事项
         原来这个表的设计要考虑很多因素的,比如数据冷热。什么是冷热呢, 就是数据访问的频繁还是不频繁,当然还要考虑是更新操作频繁还是查找工作频繁呢。这些都应该作为设计物理表字段和索引的考虑方面。索引是什么,是一种B+树,
     数据结构,我不熟。据说DB2里只有一种数据结构。B+树中存着索引的值和rowid。所以我们按索引查找会很快找到这一行,不足为奇。建立了一个主键,就同时创建
     一个索引,一个主键应该从现有数据里分析出来,并不是凭空创造一个id做索引。添加数据,是不会走索引的,但是修改和删除就会走索引了,道理很简单,无论更新
     还是删除,都要先查找个数据,所以索引还是会起到作用的,淡然你更新一条数据的同时也更新了这个索引,其中平衡要好好把握,呵呵。查询一条数据的时候条件越
     多越精确越好了。
         排序很影响sql效率的,所以不到必要时,不要进行排序,关键字如下(order by,group by,distinct),索引其实是有一个默认排序的,默认升序,当然你也可
     以设置索引默认排序。
         cluster index和Noncluster index的区别,首先数据结构不同。cluster index影响表的顺序,并且排序速度要快一些,大规模查询有效。当然这个我还有点没大听懂,
     后续接着研究吧,呵呵。
         组合索引,这个很奇妙的,呵呵。组合索引的顺序很重要,第一列是引导列,就像一个标记一样,剩下的列存在子节点中。注意,剩下列的值哦,这一点非常重要,
     很多方向可以利用。
      order by 索引,先查找,再排序。
      单列索引的好处是能快速定位行,但是组合索引就是能把索引中得值放入索引中。
      ok,先这些吧,呵呵。