博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL编程 优化篇(五) 优化数据库对象
阅读量:3906 次
发布时间:2019-05-23

本文共 1716 字,大约阅读时间需要 5 分钟。

优化表的数据类型

在MySQL中,可以使用函数PROCEDURE ANALYSE()对当前应用的表进行分析,该函数可以对数据表中列的数据类型提出优化建议,用户可以根据应用的实际情况酌情考虑是否实施优化。

使用方法:

mysql> mysql> select * from t PROCEDURE ANALYSE();+-------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+--------+------------------------+| Field_name  | Min_value | Max_value | Min_length | Max_length | Empties_or_zeros | Nulls | Avg_value_or_avg_length | Std    | Optimal_fieldtype      |+-------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+--------+------------------------+| icydate.t.a | 1         | 2         |          1 |          1 |                0 |     0 | 1.5000                  | 0.5000 | ENUM('1','2') NOT NULL || icydate.t.b | NULL      | NULL      |          0 |          0 |                0 |     2 | 0.0                     | 0.0    | CHAR(0)                |+-------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+--------+------------------------+2 rows in set (0.00 sec)

注意

如果表中的数据较少,提出的建议可能不是我们预期的结果。所有,如果是对一个大表进行分析,提出的建议会更准确。

逆规范化

为什么需要?

规范化越高,那么产生的关系就越多,关系过多的直接结果就是导致表之间的连接操作越频繁,而表之间的连接操作是性能比较低的操作,直接影响查询的速度。所以,对于查询较多的应用,就需要根据实际情况运行逆规范化对数据进行设计,通过逆规范化来提高查询的性能。

反规范化的好处是降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,相应带来的问题是可能出现数据完整性问题。加快查询速度,但会降低修改速度。因此,决定做反规范时,一定要权衡利弊。

常用的反规范技术有增加 冗余列、增加派生列、重新组表和分割表

  • 增加冗余列:指在多个表中具有相同的列,它常用来在查询时避免连接操作。

  • 增加派生列:指增加的列来自其他表中的数据,由其他表中的数据经过计算生成。增加的派生列其作用是在查询时减少连接操作,避免使用集函数。

  • 重新组表:指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

  • 分割表:垂直拆分和水平拆分

提高查询速度

查询如:了解最近一周客户的消费总金额和近一周每天不同时段用户的消费总金额

有三种实现方式:

  1. 直接查询原表,得出想要的结果

  2. 创建中间表,表结构和原表结构完全相同,转移要统计的数据到中间表,然后在中间表进行统计

  3. 创建统计表,凌晨跑任务,将结果汇总到统计表

转载地址:http://iiqen.baihongyu.com/

你可能感兴趣的文章
GDB
查看>>
Oracle RAC Failover 详解
查看>>
[转载]Oracle RAC客户端连接不稳定的解决方法
查看>>
ORA RAC ORA-12545:因目标主机或对象不存在,连接失败!
查看>>
证明两节点能正常failover的sql
查看>>
oracle10g rac 报ora-12545错误的解决方案 转载
查看>>
Linux配置Xmanager
查看>>
IP地址正则表达式
查看>>
对SOAP消息头的处理
查看>>
webservice TCP Monitor
查看>>
Oracle中sysdate的时区偏差
查看>>
【每日一算】旋转有序数组
查看>>
【每日一算】两数之和
查看>>
深入理解Mysql索引底层数据结构与算法
查看>>
B+树算法在mysql中能存多少行数据?
查看>>
【vue学习】—条件判断、循环遍历
查看>>
【vue学习】—slot插槽的使用
查看>>
怎样做研究
查看>>
labview 局部变量问题
查看>>
labview 循环外部与数组相连时问题
查看>>