通常多表连接查询(JOIN)比嵌套查询(子查询)效率更高,因为数据库优化器可以对连接进行更好的执行计划优化,而子查询(尤其是相关子查询)可能导致多次执行或产生临时表。
MYSQL5.7以前是这样
相关子查询(子查询依赖外层查询的值)对外层每一行都会执行一次,效率很低;非相关子查询(独立子查询)只执行一次,效率更高。应尽量避免使用相关子查询。
尽量使用UNION ALL操作,而不使用UNION操作,因为UNION 会去除重复行,需要排序和去重操作,开销大;UNION ALL 直接合并结果集,不去重,效率更高。如果业务允许(不需要去重),应使用 UNION ALL。
经常使用COMMIT语句,以尽量释放封锁。及时提交事务(COMMIT)可以释放持有的锁,减少锁竞争,提高系统并发性能。尤其对于频繁执行的短事务,建议及时提交。
评论