重複の管理

SQL Serverでクエリ性能を改善する

Dean Smith

Founder, Atamai Analytics

重複を返すクエリ

SELECT PlayerName,
       Team
FROM PlayerStats; 
PlayerName Team
... ...
Emmanuel Mudiay DEN
Emmanuel Mudiay NYK
Enes Kanter NYK
Eric Bledsoe PHO
Eric Bledsoe MIL
... ...
SQL Serverでクエリ性能を改善する

DISTINCT() で重複を除去

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
PlayerName
...
Emmanuel Mudiay
Enes Kanter
Eric Bledsoe
Eric Gordon
Eric Moreland
...
SQL Serverでクエリ性能を改善する

DISTINCT() の代わりに GROUP BY

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
SELECT PlayerName
FROM PlayerStats 
GROUP BY PlayerName;
SQL Serverでクエリ性能を改善する

DISTINCT() の代わりに GROUP BY

SELECT DISTINCT(PlayerName)
FROM PlayerStats;
SELECT PlayerName
FROM PlayerStats 
GROUP BY PlayerName;
SELECT PlayerName,
    COUNT(Team) AS TeamsPlayedFor
FROM PlayerStats 
GROUP BY PlayerName;
PlayerName TeamsPlayedFor
... ...
Emmanuel Mudiay 2
Enes Kanter 1
Eric Bledsoe 2
Eric Gordon 1
Eric Moreland 1
... ...
SQL Serverでクエリ性能を改善する

別の方法は?

SELECT PlayerName
FROM Players;
PlayerName
...
Emmanuel Mudiay
Enes Kanter
Eric Bledsoe
Eric Gordon
Eric Moreland
...
SQL Serverでクエリ性能を改善する

Fruits テーブル

Fruits1

FruitName FruitType
Grapefruit Citrus
Orange Citrus
Peach Stone
Strawberry Berry

Fruits2

FruitName FruitType
Marionberry Berry
Orange Citrus
Plum Stone
Strawberry Berry
SQL Serverでクエリ性能を改善する

重複した果物

 

 

 

  • OrangeStrawberry は重複

Fruits1Fruits2 に追加

FruitName FruitType
... ...
Orange Citrus
Orange Citrus
Plum Stone
Strawberry Berry
Strawberry Berry
SQL Serverでクエリ性能を改善する

UNION で重複を除去

SELECT FruitName, FruitType
FROM Fruits1

UNION

SELECT FruitName, FruitType
FROM Fruits2
FruitName FruitType
Grapefruit Citrus
Orange Citrus
Peach Stone
Strawberry Berry
Marionberry Berry
Plum Stone
SQL Serverでクエリ性能を改善する

UNION ALL は?

 

  • UNION ALL
    • 複数テーブルの行を結合し、重複行は削除しない

 

  • UNION
    • 複数テーブルの行を結合し、重複行を削除する
SQL Serverでクエリ性能を改善する

DISTINCT() と UNION

  • 使用は慎重に
  • 内部ソートで順序付けと重複確認を行う場合がある
  • 実行時間が延びる可能性
SQL Serverでクエリ性能を改善する

DISTINCT() の使い方

DISTINCT() を使う前に確認:

  • 代替手段はあるか
    • 代わりに一意キーのあるテーブルを使う
  • 集計関数を使うか
    • GROUP BY で集約
SQL Serverでクエリ性能を改善する

UNION の使い方

UNION を使う前に確認:

  • 重複行は許容か
  • 結合で重複が発生するか
  • 重複可、または発生しないなら UNION ALL を検討
SQL Serverでクエリ性能を改善する

Passons à la pratique !

SQL Serverでクエリ性能を改善する

Preparing Video For Download...