Leetcode 182重複する電子メールを検索する
1.タイトルの説明
2.テーマの核心内容の解釈:
テーブルのデータを再確認し、セクションを投影します.
3.解答方法両表を直接操作
コードは簡単で、小さな細部に注意する必要があります.p 1.id欠点:distinctは時間がかかり、2表のデカルト積も時間がかかり、最終的には342 msかかる.テンポラリテーブルプラスパケット
知識点は,テンポラリテーブルとgroupbyの2つであり,テンポラリテーブルにより各emailのカウントを統計し,カウントを判断することを構想している.欠点:効率は依然として低く、314 msの時間がかかる groupbyにhaving を加える
グループbyによりパケット化し,distinctの存在に代わってhaving中の集約関数によりパケットをフィルタリングし,効率を大幅に向上させた.時間は145 msしかかかりません
締めくくり
以上の方法に加えて、sql文に異なる位置でリターンを加えると、sqlサーバがsql文解析に与える影響が大きいという小さな問題を発見しました.
2.テーマの核心内容の解釈:
テーブルのデータを再確認し、セクションを投影します.
3.解答方法
select distinct p1.Email
from Person p1, Person p2
where
p1.Email=p2.Email and p1.id<p2.id;
コードは簡単で、小さな細部に注意する必要があります.p 1.id欠点:distinctは時間がかかり、2表のデカルト積も時間がかかり、最終的には342 msかかる.
select Email
from
(
select Email, count(Email) as c
from person
group by Email
) as t
where t.c>1;
知識点は,テンポラリテーブルとgroupbyの2つであり,テンポラリテーブルにより各emailのカウントを統計し,カウントを判断することを構想している.欠点:効率は依然として低く、314 msの時間がかかる
select Email
from person group by Email having count(Email)>1;
グループbyによりパケット化し,distinctの存在に代わってhaving中の集約関数によりパケットをフィルタリングし,効率を大幅に向上させた.時間は145 msしかかかりません
締めくくり
以上の方法に加えて、sql文に異なる位置でリターンを加えると、sqlサーバがsql文解析に与える影響が大きいという小さな問題を発見しました.