我正在考虑整体性能,并提出如何以最快的方式从表中获取行的问题:
SELECT *
FROM table a
WHERE a.id IN (SELECT id FROM table b)
或者
SELECT *
FROM table a
WHERE (SELECT COUNT(id) FROM table b WHERE b.id = a.id)>0
在我的开发机器上运行分析器并没有太大的不同,但我没有大量的数据表来比较这个问题。
因此,如果有人能说出哪种方式更好以及为什么更好,那就太酷了。我读过一次,将IN
值拆分为许多OR
类似的值,但我不确定这是否一般,如果我查询子选择,是否相同。在这种情况下,我猜 COUNT 会更快......IN (1,2,3,4)
1 OR 2 OR 3 OR 4