Interogarea după SELECT

Îmbunătățirea performanței interogărilor în SQL Server

Dean Smith

Founder, Atamai Analytics

Ordinea de procesare după SELECT

1.  FROM

2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP
Îmbunătățirea performanței interogărilor în SQL Server

Totul nu este întotdeauna bine

SELECT *
FROM PlayerStats;

SELECT * este util pentru explorarea datelor, dar poate afecta performanța

PlayerName Team Position ... ...
Alex Abrines OKC SG ... ...
Quincy Acy BRK PF ... ...
Steven Adams OKC C ... ...
Bam Adebayo MIA C ... ...
... ... ... ... ...
Îmbunătățirea performanței interogărilor în SQL Server

Mai puțin înseamnă mai bine

SELECT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;

Selectați doar coloanele necesare

PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
... ... ...
Îmbunătățirea performanței interogărilor în SQL Server

Totul într-un JOIN

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

SELECT * în JOIN-uri returnează duplicate ale coloanelor de îmbinare

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 ...
... ... ... ... ...
Îmbunătățirea performanței interogărilor în SQL Server

Tot ce aveți nevoie într-un JOIN

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

Specificați explicit coloanele returnate și tabelele sursă

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
... ... ... ...
Îmbunătățirea performanței interogărilor în SQL Server

Rândurile de la 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
Îmbunătățirea performanței interogărilor în SQL Server

Procentaj la 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
Îmbunătățirea performanței interogărilor în SQL Server

Nu există sus sau jos

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
Îmbunătățirea performanței interogărilor în SQL Server

Alți limitatori de rânduri

Limitator de rânduri Clauză de ordonare Bază de date
TOP ORDER BY Microsoft SQL Server
ROWNUM ORDER BY Oracle
LIMIT ORDER BY PostgreSQL
Îmbunătățirea performanței interogărilor în SQL Server

Când să utilizați ORDER BY

Utilizați ORDER BY într-o interogare:

  • Pentru a explora datele
  • Când există un motiv întemeiat pentru a sorta rezultatele finale
Îmbunătățirea performanței interogărilor în SQL Server

Să exersăm!

Îmbunătățirea performanței interogărilor în SQL Server

Preparing Video For Download...