2016-09-14 3 views
0

私は3 lacのレコードを持っています。私は重複したレコードを数え、すべての重複レコードを返す必要があります(例:[email protected]が10回、10のレコードが10個のレコードをすべて返した場合)レコード照会の実行時間が重複しているのを発見しました

私はそれに対してクエリを作成しましたが、 。時間を減らすための提案はありますか?

SELECT g.guest_name, g.email, b.totalCount AS duplicate_guest 
FROM guest g 
INNER JOIN (SELECT email, COUNT(Id) AS totalCount FROM guest GROUP BY email) b ON g.email = b.email 
+0

PLSが説明し、また、 'guest'テーブルにあなたが持っているインデックスをリストの出力を追加します。 – Shadow

答えて

0

HAVING count(*) > 1を追加します。

また、それを最適化するために、電子メールの列に索引が存在すべきであることを確認してください

SELECT g.guest_name, g.email, b.count as duplicate_guests 
FROM guest g 
INNER JOIN 
(
    SELECT email, COUNT(Id) AS count 
    FROM guest 
    GROUP BY email 
    HAVING count(*) > 1 
) b ON g.email = b.email 
+0

ありがとう、1.3秒かかる 非常に有用な提案**メールのインデックス** –

+0

あなたの歓迎... –

0

ただ、クエリ以下のような状態を有するを追加することにより、結合条件のデータを減らすことが必要な選択インナー

SELECT g.guest_name, g.email, b.totalCount AS duplicate_guest 
FROM guest g 
INNER JOIN 
(
    SELECT email, COUNT(Id) AS totalCount 
    FROM guest 
    GROUP BY email 
    HAVING count(*) > 1 
) b ON g.email = b.email 
+0

ありがとう、今は5秒かかる –

関連する問題