소개

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

Dean Smith

Founder, Atamai Analytics

지진 데이터베이스

지진 데이터베이스

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

NBA 시즌 2017-2018 데이터베이스

NBA 시즌 2017-2018 데이터베이스

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

고객 주문 데이터베이스

고객 주문 데이터베이스

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

읽기 쉬운가요?

Select ps.Team, count(p.PlayerName) 
As NonNthAmerPlayers from 
 PlayerStats ps inner 
join (select PlayerName FROM Players 
    WHERE Country <> 'USA' Or Country 
 <> 'Canada' ) 
 p on p.PlayerName = ps.PlayerName 
 group BY ps.Team
having Count(p.PlayerName) 
>=24 Order by NonNthAmerPlayers desc
Team NonNthAmerPlayers
HOU 24
LAL 24
MEM 24
MIL 24
SQL Server에서 쿼리 성능 향상하기

권장 사항

  • 일관성을 유지하십시오
  • 모든 SQL 구문은 UPPER CASE를 사용하십시오
  • 주요 구문마다 줄바꿈: SELECT, FROM, WHERE
  • 코드 들여쓰기:
    • 서브쿼리
    • ON 구문
    • AND/OR 조건
    • 긴 한 줄을 피할 때, 예: 여러 열 이름
  • 쿼리는 세미콜론(;)으로 끝내십시오
  • 필요 시 AS로 별칭을 지정하십시오
SQL Server에서 쿼리 성능 향상하기

훨씬 더 좋습니다...

수정 전

Select ps.Team, count(p.PlayerName) 
As NonNthAmerPlayers from 
 PlayerStats ps inner 
join (select PlayerName FROM Players 
    WHERE Country <> 'USA' Or Country 
 <> 'Canada' ) 
 p on p.PlayerName = ps.PlayerName 
 group BY ps.Team
having Count(p.PlayerName) 
>=24 Order by NonNthAmerPlayers desc

수정 후

SELECT ps.Team, 
    COUNT(p.PlayerName) NonNthAmerPlayers
FROM PlayerStats ps
INNER JOIN
        (SELECT PlayerName 
         FROM Players 
         WHERE Country <> 'USA'
                OR Country <> 'Canada' ) p
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24
ORDER BY NonNthAmerPlayers DESC;
SQL Server에서 쿼리 성능 향상하기

블록 주석 처리

/* 
명단에 북미 외 선수 24명 이상이 있는 NBA 팀 목록을 반환합니다.
*/

SELECT ps.Team, COUNT(p.PlayerName) NonNthAmerPlayers FROM PlayerStats ps INNER JOIN (SELECT PlayerName FROM Players WHERE Country <> 'USA' OR Country <> 'Canada' ) p ON p.PlayerName = ps.PlayerName GROUP BY ps.Team HAVING COUNT(p.PlayerName) >=24 ORDER BY NonNthAmerPlayers DESC;

코드나 텍스트의 블록 주석에는 /**/를 사용하십시오

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

블록 주석 처리

/* 
명단에 북미 외 선수 24명 이상이 있는 NBA 팀 목록을 반환합니다.
*/

SELECT ps.Team, COUNT(p.PlayerName) NonNthAmerPlayers FROM PlayerStats ps INNER JOIN (SELECT PlayerName FROM Players WHERE Country <> 'USA' OR Country <> 'Canada' ) p ON p.PlayerName = ps.PlayerName GROUP BY ps.Team HAVING COUNT(p.PlayerName) >=24 ORDER BY NonNthAmerPlayers DESC;

코드나 텍스트의 블록 주석에는 /**/를 사용하십시오

Team NonNthAmerPlayers
HOU 24
LAL 24
MEM 24
MIL 24
SQL Server에서 쿼리 성능 향상하기

라인 주석 처리

--는 한 의 코드나 텍스트를 주석 처리합니다

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers
FROM PlayerStats ps

INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24

ORDER BY NonNthAmerPlayers DESC;
SQL Server에서 쿼리 성능 향상하기

라인 주석 처리

--는 한 의 코드나 텍스트를 주석 처리합니다

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- 선수 수
FROM PlayerStats ps

INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- 들여쓴 서브쿼리
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24

ORDER BY NonNthAmerPlayers DESC;

 

  • 새 열이 선수 수임을 나타내는 주석

 

  • 서브쿼리를 들여썼음을 나타내는 주석
SQL Server에서 쿼리 성능 향상하기

라인 주석 처리

--는 한 의 코드나 텍스트를 주석 처리합니다

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- 선수 수
FROM PlayerStats ps
-- 여기서부터 INNER JOIN
INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- 들여쓴 서브쿼리
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24
-- ORDER BY는 필요하지 않으므로 제거
ORDER BY NonNthAmerPlayers DESC;

 

 

  • INNER JOIN 앞에 구분 주석

 

 

  • ORDER BY 필요 여부에 대한 주석
SQL Server에서 쿼리 성능 향상하기

라인 주석 처리

--는 한 의 코드나 텍스트를 주석 처리합니다

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- 선수 수
FROM PlayerStats ps
-- 여기서부터 INNER JOIN
INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- 들여쓴 서브쿼리
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24;
-- ORDER BY는 필요하지 않으므로 제거
-- ORDER BY NonNthAmerPlayers DESC

 

 

 

 

 

 

  • ORDER BY 구문을 주석 처리함
SQL Server에서 쿼리 성능 향상하기

Vamos praticar!

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

Preparing Video For Download...