2

同じテーブルに一致するすべての行を一覧表示したいと思います。これまで私はこれを思いついた

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

ただし、サブクエリ自体は0.1秒で実行されますが、このクエリは実行を続けます。

どうすればこれを最適化できますか?

サブクエリは、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

firm_namePS:実行を高速化するために、必ず列にインデックスを追加してください。

于 2012-11-08T08:42:12.167 に答える