加入收藏 | 设为首页 | 会员中心 | 我要投稿 92站长网 (https://www.92zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL大数据查询功能优化的示例

发布时间:2022-02-17 14:45:05 所属栏目: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,存储时间戳。

(编辑:92站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读