记一次MySql千万级数据量单表按日分组查询平均值的优化遇到的各种问题

1、单表千万级数据量 子查询 where  in 要比 where exists 快(查询时间差了100倍)

2、需要对datetime类型进行group by时(众所周知,函数不走索引),把日期的值拆分,比如要按日进行分组,则增加字段int 存放yyyyMMdd(为什么不是varchar,尽量用int等小字节,加快速度)

3、数据量不大的临时表的存储引擎用engine=MEMORY ,优化效果很明显。数据量太大的不建议,因为很吃内存,内存不够数据可能会丢失数据或者中断存储过程

4、truncate是先执行drop操作,然后再执行create操作,执行完成后会恢复初始的表空间。(找资料时看到有文章说对于临时表要先truncate再drop,差点被坑死,故有此一记)

 

更优的方法当然是把数据放到nosql/newsql里去,奈何领导不同意,只能先从数据库层面入手了。

上一篇:SQL语句中----删除表数据drop、truncate和delete的用法


下一篇:状态模式-将状态和行为封装成对象