mackxu
子曰:学而时习之,不亦说乎?

优化数据库对象

目录:

n  优化表的数据类型

n  通过拆分提高表的访问效率

n  适度冗余

n  使用中间表提高统计查询速度

1. 优化表的数据类型

优化数据类型提高性能的原理:

(1)     通过选用更”小”的数据类型减少存储空间,使查询相同的数据需要的IO资源降低

(2)     使用合适的数据类型加速数据的比较

Char 固定长度字符类型 存放长度以字符个数来计算,有字符个数的限制 最终最大存储长度基于字符集

Varchar 可变长度字符类型 存储长度有字节限制 最大(65535字节)

可通过proceduce analyse()对表中的字符提出优化建议

2. 通过拆分提高表的访问效率

(1)     垂直拆分

把一张表的主码和一些列放在一个表,然后主码和另外的列放在另一个表中。

如果一个表中某些列常用,而另外一些列不常用,则可采用垂直拆分

优点:可以使查询的数据列变小,一个数据页能存放更多的数据,在查询时就可以减少IO次数

缺点:需要管理冗余列,查询所有数据需要联合(join)操作

(2)     水平拆分

根据一列或多列数据的值,把数据行存放到多张表中

水平拆分在以下情况考虑使用:

  1. 表很大
  2. 表中的数据本来就有独立性
  3. 需要把数据存放到多个介质上

3. 适度冗余(让Query减少join)

常用反规范技术现象:

(1)     增加冗余列(查询时减少连接操作)

(2)     增加派生列(减少连接操作、避免使用集合函数、提高查询效率)

(3)     重新组表 (添加新表,减少连接)

(4)     分割表

4. 使用中间表提高查询速度

(1)     中间表复制源表部分数据,并且与源表”隔离”,在中间表上做统计查询不会对在线应用产生负面影响

(2)     可以再中间表上灵活添加索引或增加临时用的新字段,从而达到提高统计查询效率

posted on 2013-03-02 13:07  mackxu  阅读(193)  评论(0编辑  收藏  举报