1.尽量不用游标
游标的操作类似将每行的值取出来,做一系列处理。如果可以去掉游标,改成一条包含多个相关子查询的 SQL,性能将大大提升。2.尽量使用 VARCHAR 不用 CHAR
- CHAR 的空格可能影响性能;
- CHAR 和 VARCHAR 的关联会导致关联不正确。
3.尽量使用 UNION ALL 尽量不用 UNION
由于 UNION 操作需要进行一次去重,去重对于性能影响很大,尽量保证相同数据只入库一次,不同表间无重复数据,进行 UNION ALL 性能会很大提升。4.避免超大结果集的直接返回
对于查询结果集达到 1 万以上,尤其是百万、千万的结果集,应避免结果集的直接返回,将原始 select 修改为 insert select,即将查询结果插入到一个结果表中或者在客户端输出时要加-q 参数。5.高精度 DECIMAL 可能使性能变慢
如果系统升级前使用的是低精度 decimal,则升级后的高精度 decimal 可能使得性
能变慢,这是由于高精度 decimal 的关联,取值等操作均要耗费更多的资源,但是这种性能变慢是正常的,只要在一个合理可接受的范围内,就不需要考虑这个问题。
6.INSERT INTO ... SELECT ... GROUP BY 串行
- 现象INSERT INTO ... SELECT ... GROUP BY ...并行按 HASH 划分,并且是多趟聚集,导致 INSERT 部分串行执行。
- 原因:按 HASH 划分数据,一趟执行不完的时候,GROUP BY 操作占着线程,导致线程池中没有空闲线程,做 INSERT 时只能串行操作。
- 解决办法: 1、如果机器核数较多(>=32),可以将并行度调低到核数的一半,线程池使用缺省值(核数)即可; 2、如果核数<32,可以将并行度调大到核数的2倍。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




