Interrogação após SELECT

Melhorando o Desempenho de Consultas no SQL Server

Dean Smith

Founder, Atamai Analytics

Ordem de processamento após SELECT

1.  FROM

2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP
Melhorando o Desempenho de Consultas no SQL Server

Nem sempre tudo é bom

SELECT *
FROM PlayerStats;

SELECT * é ótimo para explorar dados, mas pode prejudicar a performance

PlayerName Team Position ... ...
Alex Abrines OKC SG ... ...
Quincy Acy BRK PF ... ...
Steven Adams OKC C ... ...
Bam Adebayo MIA C ... ...
... ... ... ... ...
Melhorando o Desempenho de Consultas no SQL Server

Só o que você precisa é melhor

SELECT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;

Selecione só as colunas necessárias

PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
... ... ...
Melhorando o Desempenho de Consultas no SQL Server

Tudo em um JOIN

SELECT * 
FROM Players p
  INNER JOIN PlayerStats ps
  ON ps.PlayerName = p.PlayerName;

SELECT * em joins retorna duplicatas das colunas de junção

PlayerName Age PlayerName Team ...
Alex Abrines 24 Alex Abrines OKC ...
Quincy Acy 27 Quincy Acy BRK ...
Steven Adams 24 Steven Adams OKC ...
Bam Adebayo 20 Bam Adebayo MIA ...
... ... ... ... ...
Melhorando o Desempenho de Consultas no SQL Server

Tudo o que você precisa em um JOIN

SELECT p.PlayerName, 
       ps.Team, 
       p.Country, 
       ps.Position
FROM Players p
  INNER JOIN PlayerStats ps
  ON ps.PlayerName = p.PlayerName;

Indique explicitamente quais colunas retornar e de quais tabelas

PlayerName Country Team Position
Alex Abrines Spain OKC SG
Quincy Acy USA BRK PF
Steven Adams New Zealand OKC C
Bam Adebayo USA MIA C
... ... ... ...
Melhorando o Desempenho de Consultas no SQL Server

Linhas no TOP

SELECT TOP 5 PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;
PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
Arron Afflalo ORL 179
Melhorando o Desempenho de Consultas no SQL Server

Porcentagem no TOP

SELECT TOP 1 PERCENT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;
PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
Arron Afflalo ORL 179
Cole Aldrich MIN 12
LaMarcus Aldridge SAS 1735
Melhorando o Desempenho de Consultas no SQL Server

Não há topo nem base

SELECT TOP 5 PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats
ORDER BY TotalPoints DESC
PlayerName Team TotalPoints
LeBron James CLE 2251
James Harden HOU 2191
Anthony Davis NOP 2110
Russell Westbrook OKC 2028
Giannis Antetokounmpo MIL 2014
Melhorando o Desempenho de Consultas no SQL Server

Outros limitadores de linhas

Limitador de linhas Cláusula de ordenação Banco de dados
TOP ORDER BY Microsoft SQL Server
ROWNUM ORDER BY Oracle
LIMIT ORDER BY PostgreSQL
Melhorando o Desempenho de Consultas no SQL Server

Quando usar ORDER BY

Use ORDER BY em uma consulta:

  • Para explorar os dados
  • Quando houver um bom motivo para ordenar os resultados finais
Melhorando o Desempenho de Consultas no SQL Server

Vamos praticar!

Melhorando o Desempenho de Consultas no SQL Server

Preparing Video For Download...