假设B表是一个临时表,里面只有一个字段id,它是A表id的一个子集。不过B表可能很大,里面可能有多达1000条记录,在这种情况下,以下语句哪个效率会更高些?
SELECT A.* FROM A INNER JOIN B ON A.ID=B.ID
SELECT A.* FROM A WHERE A.ID IN (SELECT B.ID FROM B)
SELECT A.* FROM A WHERE A.ID IN (B表所有的id,直接构造好的)
A表有索引会提高查询速度吗?
自然是第一个快。
第二种情况下,对于A的所有记录,每一条都会执行一次in()里的子查询。
第一种最快
第三种次快
第二种最慢
本文探讨了三种不同的SQL查询方式在处理大量数据时的效率问题,分析了使用INNER JOIN、WHERE IN子查询及预构造ID列表的方法,并指出在特定场景下INNER JOIN通常表现最优。
2156

被折叠的 条评论
为什么被折叠?



