今天学习了溪峰老师分享的文章 OceanBase 改写系列第三篇:如何提升子查询性能(包含聚合函数)的最佳实践 收获还是蛮多的。
对于包含聚合函数的子查询性能提升,基本原则是尽量提升为连接,缩小子查询结果集合。根据子查询中相关连接条件的不同,改写策略又可以细分成聚合优先的聚合类子查询提升和连接优先的聚合类子查询提升。
如果表上的关联字段存在等值判断,这样的效果最好;如果为非等值判断,在改写过程中需要进行一些避坑操作,实际实践过程中,对SQL期望结果掌握不熟练时,可以多参考生产测试结果,避免过分自信导致改写后期望结果不一致问题。
另外表在设计过程中,如果在关联字段上合理使用了索引,对整个查询的性能提升也是有效的。