[mysql查询优化]你需要知道的分区,提升查询效率的利器
背景
周末的一天早上,突然程序员李四收到了技术总监的一个电话:老板周末看BI数据,数据半天出不来,你赶紧优化下。老板今天约了投资方,要给投资方看数据,千万不能出现纰漏,你辛苦下紧急处理下。
李四揉了揉睡眼惺忪的眼睛,心中 一句:我靠,这个怎么偏偏周末出问题,先不想投资成功能不能加薪,要是投资不成功,可能连饭碗都不保。
李四分析了查询慢的原因后,结合老板需要查询最近几个月维度的数据后果断选择了一个提高查询性能的方法:分区。
分区概念
将大表分成多个较小的物理部分,每个部分称为一个分区。目的是提高查询性能。
分区的类型
- 范围分区(Range Partitioning):根据某个列的值范围进行分区【比如日期】。
- 列表分区(List Partitioning):根据某个列的离散值进行分区【比如城市】。
- 哈希分区(Hash Partitioning):根据某个列的哈希值进行分区【比如ID】。
- 复合分区(Composite Partitioning):结合两种或多种分区方法,如范围分区和哈希分区。
分区的创建(MySQL为例)
分区表的维护
动态的添加和删除分区
查看分区
检验效果
分区前查询全表 1万多条数据
分区后只查询6个区域的5千多条数据
数据量越大效果越明显。
最后
希望大家在进行查询时,立马能想到用这个技能来优化查询。