SQL优化之三--优化数据库对象

在数据库设计的时候,用户可能会遇到这种问题:是否应该把所有表都按照第三范式来设计?表里面的字段到底该设置为多大才合适?

一、优化表的数据类型

虽然在设计的时候需要考虑字段的长度留有一定的冗余,但不推荐很多字段留有很大的冗余,这样既浪费磁盘存储空间,同时在应用程序操作时也浪费物理内存。

在MySql 中可以使用函数PROCEDURE ANALYSE() 对当前应用的表进行分析,该函数可以对数据表中列的数据类型提出优化建议。

select * from tbl_name PROCEDURE ANALYSE();
//不要为包含的值多于16个或者256个字节的ENUM类型提出建议
select * from tbl_name PROCEDURE ANALYSE(16,256);

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

  • 垂直拆分
  • 水平拆分

三、逆规范化

规范化越高,产生的关系越多,关系多直接结果就是导致表之间的连续操作越频繁。反规范的好处就是降低连续操作的需求、降低外码和索引的数目,还可能减少表的数目。

  • 增加冗余列
  • 增加派生列
  • 重新组表
  • 分割表

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

对于数据量较大的表,在其进行统计查询会效率很低,我们可以通过中间表进行查询。中间表的有点是:

  • 在中间表上做统计查询不会对在线应用产生负面的影响
  • 中间表可以灵活添加索引或者临时增加新字段,从而提高统计查询效率和辅助统计查询作用。

中间表的原理
查询最近一周的数据
insert into tmp_table select * from table where create_time>(now(),-7)

    原文作者:黄海佳
    原文地址: https://www.jianshu.com/p/e856e4fb2a6a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞