Undersökning efter SELECT

Förbättra frågeprestanda i SQL Server

Dean Smith

Founder, Atamai Analytics

Bearbetningsordning efter SELECT

1.  FROM

2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP
Förbättra frågeprestanda i SQL Server

Allt är inte alltid bra

SELECT *
FROM PlayerStats;

SELECT * är bra för datautforskning men kan ge sämre prestanda

PlayerName Team Position ... ...
Alex Abrines OKC SG ... ...
Quincy Acy BRK PF ... ...
Steven Adams OKC C ... ...
Bam Adebayo MIA C ... ...
... ... ... ... ...
Förbättra frågeprestanda i SQL Server

Det du behöver är bättre

SELECT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;

Välj bara de kolumner som behövs

PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
... ... ...
Förbättra frågeprestanda i SQL Server

Allt i en JOIN

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

SELECT * vid join returnerar dubbletter av kopplade kolumner

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 ...
... ... ... ... ...
Förbättra frågeprestanda i SQL Server

Det du behöver i en JOIN

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

Ange explicit vilka kolumner som ska returneras och från vilka tabeller

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
... ... ... ...
Förbättra frågeprestanda i SQL Server

Rader med 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
Förbättra frågeprestanda i SQL Server

Procent med 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
Förbättra frågeprestanda i SQL Server

Det finns inget topp eller botten

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
Förbättra frågeprestanda i SQL Server

Övriga radbegränsare

Radbegränsare Sorteringsklausul Databas
TOP ORDER BY Microsoft SQL Server
ROWNUM ORDER BY Oracle
LIMIT ORDER BY PostgreSQL
Förbättra frågeprestanda i SQL Server

När ska ORDER BY användas

Använd ORDER BY i en fråga:

  • För att utforska data
  • När det finns ett gott skäl att sortera det slutliga resultatet
Förbättra frågeprestanda i SQL Server

Nu kör vi en övning!

Förbättra frågeprestanda i SQL Server

Preparing Video For Download...