我想在同一张桌子上列出所有匹配的行。 到目前为止,我已经提出了这个
SELECT *
FROM parim_firms
WHERE firm_name IN (
SELECT firm_name
FROM parim_firms
GROUP BY firm_name
HAVING COUNT(*) > 1
)
但是这个查询一直在运行,尽管子查询本身在0.1秒内运行。
我怎样才能优化这个?
我认为子查询对每一行执行,而不仅仅执行一次。我是对的吗?
答案 0 :(得分:4)
加入它怎么样?
SELECT a.*
FROM parim_firms a
INNER JOIN
(
SELECT firm_name
FROM parim_firms
GROUP BY firm_name
HAVING COUNT(*) > 1
) b ON a.firm_name = b.firm_name
PS:请务必在列firm_name
上添加索引,以便更快地执行。