MySQL大数据查询功能优化的示例
发布时间:2022-02-17 14:57:37 所属栏目:MySql教程 来源:互联网
导读:这篇文章将为大家详细讲解有关MySQL大数据查询性能优化的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 MySQL性能优化包括表的优化与列类型选择,表的优化可以细分为什么? 1、定长与变长分离;2、常用字段与
这篇文章将为大家详细讲解有关MySQL大数据查询性能优化的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 MySQL性能优化包括表的优化与列类型选择,表的优化可以细分为什么? 1、定长与变长分离;2、常用字段与不常用字段要分离; 3、在1对多,需要关联统计的字段上添加冗余字段。 一、表的优化与列类型选择 表的优化: 1、定长与变长分离 如 id int,占4个字节,char(4)占4个字符长度,也是定长,time即每一单元值占的字节是固定的。 核心且常用字段,宜建成定长,放在一张表。 而varchar,text,blob这种变长字段,适合单放一张表,用主键与核心表关联起来。 2、 在1对多,需要关联统计的字段上添加冗余字段。 看如下的效果: 每个版块里,有N条帖子,在首页显示了版块信息和版块下的帖子数。 这是如何做的 MySQL大数据查询性能优化的示例 如果board表只有前2列,则需要取出版块后, 再查post表,select count(*) from post group by board_id,得出每个版块的帖子数。 二、列类型选择 1、字段类型优先级 整型>date time>enum char>varchar>blob,text 整型:定长,没有国家/地区之分,没有字符集的差异。比如: tinyint 1,2,3,4,5 <--> char(1) a,b,c,d,e 从空间上,都占1个字节,但是 order by 排序,前者快。原因,或者需要考虑字符集与校对集(就是排序规则); time定长,运算快,节省空间。考虑时区,写sql时不方便 where > `2018-08-08`; enum,能起到约束的目的,内部用整型来存储,但与cahr联查时,内部要经历串与值的转化; char定长,考虑字符集和(排序)校对集; varchar不定长,要考虑字符集的转换与排序时的校对集,速度慢; text/blob 无法使用内存临时表(排序等操作只能在磁盘上进行) 附:关于date/time的选择,大师的明确意见,直接选 int unsgined not null,存储时间戳。 (编辑:我爱制作网_潮州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |