2

我想列出在同一张表上匹配的所有行。到目前为止,我已经想出了这个

SELECT *
FROM parim_firms
WHERE firm_name IN (
    SELECT firm_name
    FROM parim_firms
    GROUP BY firm_name
    HAVING COUNT(*) > 1
)

但是这个查询继续运行,尽管子查询本身在 0.1 秒内运行。

我该如何优化呢?

我认为子查询对每一行执行,而不仅仅是一次。我对吗?

4

1 回答 1

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以加快执行速度。

于 2012-11-08T08:42:12.167 回答