Interroger après SELECT

Améliorer les performances des requêtes dans SQL Server

Dean Smith

Founder, Atamai Analytics

Ordre de traitement après SELECT

1.  FROM

2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP
Améliorer les performances des requêtes dans SQL Server

Tout n'est pas toujours bon

SELECT *
FROM PlayerStats;

SELECT * est pratique pour interroger les données mais peut nuire aux performances

PlayerName Team Position ... ...
Alex Abrines OKC SG ... ...
Quincy Acy BRK PF ... ...
Steven Adams OKC C ... ...
Bam Adebayo MIA C ... ...
... ... ... ... ...
Améliorer les performances des requêtes dans SQL Server

L'essentiel, c'est mieux

SELECT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;

Ne sélectionnez que les colonnes nécessaires

PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
... ... ...
Améliorer les performances des requêtes dans SQL Server

Tout dans une JOIN

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

SELECT * dans les jointures duplique les colonnes de jointure

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 ...
... ... ... ... ...
Améliorer les performances des requêtes dans SQL Server

L'essentiel dans une JOIN

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

Indiquez explicitement les colonnes à retourner et leurs tables d'origine

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
... ... ... ...
Améliorer les performances des requêtes dans SQL Server

Lignes en haut (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
Améliorer les performances des requêtes dans SQL Server

Pourcentage avec 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
Améliorer les performances des requêtes dans SQL Server

Pas de haut sans tri

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
Améliorer les performances des requêtes dans SQL Server

Autres limiteurs de lignes

Limiteur de lignes Clause de tri Base de données
TOP ORDER BY Microsoft SQL Server
ROWNUM ORDER BY Oracle
LIMIT ORDER BY PostgreSQL
Améliorer les performances des requêtes dans SQL Server

Quand utiliser ORDER BY

Utilisez ORDER BY dans une requête :

  • Pour interroger les données
  • Quand il y a une bonne raison de trier le résultat final
Améliorer les performances des requêtes dans SQL Server

Passons à la pratique !

Améliorer les performances des requêtes dans SQL Server

Preparing Video For Download...