下午同事进行一个比较大的SQL性能调优,原SQL的查询时间大约11S左右,我们首先运行,查看了多个表的扫描次数,逻辑读取次数,物理读取次数。发现其中一个子件表的逻辑读取次数40多次,分析原因在这个表的身上。
又回到SQL语句,运行每一部分SQL语句,查询运行的情况。同事把这个表和与它连接的表调换一下连接查询的顺序,发现性能调高了不少。查询的速度调高了很多。
我们在写SQL的时候,除了对查询的数据时正确的,还要考虑查询的性能,一般表的直接连接顺序是很关键的,因为它会对数据查询的性能造成很大的影响。一般情况下,尽量是小表连接大表的时候速度快一些,能用左连接的时候,就用左连接,内连接可能会造成性能的较低。
另外,过滤条件的位置和顺序,也是影响性能的一个因素,所以我们在写SQL的时候,一定要确定好,哪个在前,哪个在后,然后再测试性能,调优,找到最优的查询顺序,提高性能。