mysql临时表优化_关于RDS mysql临时表的优化方案

RDS for mysql存在临时表的概念。包含“磁盘临时表”和“内存临时表”两种,其中磁盘临时表由于需要通过磁盘物理文件来存放,会导致sql的执行效率降低,因此需要尽量去避免这种现象的发生。内存临时表可以在控制台上通过tmp_table_size来设置其大小,通过这个设置可以将临时结果存储在内存中以供调用。当session生成的临时内容超过了内存临时表的配额后就会将内存临时表的数据转存到磁盘临时表。

下面的这些使用场景一定会使用到临时表,需要特别注意:

1)使用UNION或者UNION ALL时,SELECT子句中包含大于512字节的列。

2)表包含TEXT或者BLOB列;

3)GROUP BY 或者 DISTINCT 子句中包含长度大于512字节的列;

可使用explain查看执行计划,Extra列看到Using temporary就意味着使用了临时表。

用户可以通过下面列出的方式优化:

1)将较大的TEXT或者BLOB列拆分成多个较小的列;

2)对大量的group by和order by语句做拆分;

3)优化业务逻辑。

4)对group by和order by的列进行优化,添加索引;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值