假设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()里的子查询。
第一种最快
第三种次快
第二种最慢