文本描述
平安人寿
(只做etl抽数)
自我介绍
sql优化问题
分情况说明
数据量过大
1)查询语句:A 先看基数(表的行数),是否有必要进行全表扫描,如果没有不做索引;
如果需要全表扫描,百万级别内的可以用优化索引,上亿的只能分区,再看消耗,消耗过大的需要优化sql语句
2)更新语句:看目标表是否有索引,数据量小可以用索引,索引会降低更新的效率(索引会排序)需要让索引失效
数据量小
SQL逻辑复杂,不做索引(可能性能更差),不能分区(没有意义),一般不执行计划,也不看,需要考虑吧中间表的形式(简化sql,常规的小表优化思路)。表的关联逻辑复杂(10几张),把不同的数据放入多张中间表,可以大大提升性能。
特殊情况
原本执行很快,后来变慢。可能是由于数据量的突然增加导致的,不是代码的问题,就不需要有化,更改更新方式就好了。(不做全表,改增量,或者会计期全量)。
外连接和内连接的区别,left join 和right join 的区别。