Dotazování po SELECT

Improving Query Performance in SQL Server

Dean Smith

Founder, Atamai Analytics

Pořadí zpracování po SELECT

1.  FROM

2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP
Improving Query Performance in SQL Server

Vše není vždy vhodné

SELECT *
FROM PlayerStats;

SELECT * je vhodné pro průzkum dat, ale může negativně ovlivnit výkon

PlayerName Team Position ... ...
Alex Abrines OKC SG ... ...
Quincy Acy BRK PF ... ...
Steven Adams OKC C ... ...
Bam Adebayo MIA C ... ...
... ... ... ... ...
Improving Query Performance in SQL Server

Méně je více

SELECT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;

Vybírejte pouze potřebné sloupce

PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
... ... ...
Improving Query Performance in SQL Server

Vše v JOIN

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

SELECT * v JOIN vrací duplicity spojovacích sloupců

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 ...
... ... ... ... ...
Improving Query Performance in SQL Server

Vše potřebné v JOIN

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

Explicitně uveďte sloupce, které mají být vráceny, a z jakých tabulek

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
... ... ... ...
Improving Query Performance in SQL Server

Řádky na vrcholu

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
Improving Query Performance in SQL Server

Procento na vrcholu

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
Improving Query Performance in SQL Server

Bez přirozeného pořadí

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
Improving Query Performance in SQL Server

Ostatní omezovače řádků

Omezovač řádků Klauzule řazení Databáze
TOP ORDER BY Microsoft SQL Server
ROWNUM ORDER BY Oracle
LIMIT ORDER BY PostgreSQL
Improving Query Performance in SQL Server

Kdy použít ORDER BY

Použijte ORDER BY v dotazu:

  • Pro průzkum dat
  • Pokud je dobrý důvod seřadit výsledné výsledky
Improving Query Performance in SQL Server

Pojďme si procvičit!

Improving Query Performance in SQL Server

Preparing Video For Download...