SQL 两表关联查询 where 条件中等号两端字段顺序对效率的影响

现有两表A(大)、B(小)作关联查询,SQL语句如下:

SQL1:select * from A,B where A.id = B.id

SQL2:select * from A,B where B.id = A.id

在写SQL的时候可能这个顺序都是随便写的,当然SQL1和SQL2 执行的结果是完全相同的,那效率是否也一样呢,答案是否定的。SQL1 相当于将A表的id取出来,然后遍历B表进行查询,SQL2相当于将B表的id取出来,然后遍历A表进行查询。如果表A的记录条数为m,表B的记录条数为n,SQL1比较的次数为n的m次方,SQL2比较的次数为m的n次方。所以在一般情况下,表A大,表B小的时候,SQL2的效率更高。

标签