중복 관리

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에서 쿼리 성능 향상하기

과일 테이블

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에서 쿼리 성능 향상하기

연습해 봅시다!

SQL Server에서 쿼리 성능 향상하기

Preparing Video For Download...