Introduzione

Migliorare le prestazioni delle query in SQL Server

Dean Smith

Founder, Atamai Analytics

Database Earthquakes

Database Earthquakes

Migliorare le prestazioni delle query in SQL Server

Database NBA Stagione 2017-2018

Database NBA Stagione 2017-2018

Migliorare le prestazioni delle query in SQL Server

Database Ordini Clienti

Database Ordini Clienti

Migliorare le prestazioni delle query in SQL Server

È facile da leggere?

Select ps.Team, count(p.PlayerName) 
As NonNthAmerPlayers from 
 PlayerStats ps inner 
join (select PlayerName FROM Players 
    WHERE Country <> 'USA' Or Country 
 <> 'Canada' ) 
 p on p.PlayerName = ps.PlayerName 
 group BY ps.Team
having Count(p.PlayerName) 
>=24 Order by NonNthAmerPlayers desc
Team NonNthAmerPlayers
HOU 24
LAL 24
MEM 24
MIL 24
Migliorare le prestazioni delle query in SQL Server

Suggerimenti

  • Sii coerente
  • Usa MAIUSCOLE per tutta la sintassi SQL
  • Vai a capo per ogni parte principale: SELECT, FROM, WHERE, ecc.
  • Indenta il codice:
    • Sottoquery
    • Istruzioni ON
    • Condizioni AND/OR
    • Per evitare righe troppo lunghe, ad es. molti nomi di colonne
  • Chiudi la query con il punto e virgola (;)
  • Metti alias dove serve con AS
Migliorare le prestazioni delle query in SQL Server

Molto meglio...

Da

Select ps.Team, count(p.PlayerName) 
As NonNthAmerPlayers from 
 PlayerStats ps inner 
join (select PlayerName FROM Players 
    WHERE Country <> 'USA' Or Country 
 <> 'Canada' ) 
 p on p.PlayerName = ps.PlayerName 
 group BY ps.Team
having Count(p.PlayerName) 
>=24 Order by NonNthAmerPlayers desc

A

SELECT ps.Team, 
    COUNT(p.PlayerName) NonNthAmerPlayers
FROM PlayerStats ps
INNER JOIN
        (SELECT PlayerName 
         FROM Players 
         WHERE Country <> 'USA'
                OR Country <> 'Canada' ) p
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24
ORDER BY NonNthAmerPlayers DESC;
Migliorare le prestazioni delle query in SQL Server

Commentare blocchi

/* 
Restituisce le squadre NBA con 24 o più giocatori
non nordamericani a roster.
*/

SELECT ps.Team, COUNT(p.PlayerName) NonNthAmerPlayers FROM PlayerStats ps INNER JOIN (SELECT PlayerName FROM Players WHERE Country <> 'USA' OR Country <> 'Canada' ) p ON p.PlayerName = ps.PlayerName GROUP BY ps.Team HAVING COUNT(p.PlayerName) >=24 ORDER BY NonNthAmerPlayers DESC;

Usa /* e */ per commentare un blocco di codice o testo

Migliorare le prestazioni delle query in SQL Server

Commentare blocchi

/* 
Restituisce le squadre NBA con 24 o più giocatori
non nordamericani a roster.
*/

SELECT ps.Team, COUNT(p.PlayerName) NonNthAmerPlayers FROM PlayerStats ps INNER JOIN (SELECT PlayerName FROM Players WHERE Country <> 'USA' OR Country <> 'Canada' ) p ON p.PlayerName = ps.PlayerName GROUP BY ps.Team HAVING COUNT(p.PlayerName) >=24 ORDER BY NonNthAmerPlayers DESC;

Usa /* e */ per commentare un blocco di codice o testo

Team NonNthAmerPlayers
HOU 24
LAL 24
MEM 24
MIL 24
Migliorare le prestazioni delle query in SQL Server

Commentare righe

Usa -- per commentare una singola riga di codice o testo

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers
FROM PlayerStats ps

INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24

ORDER BY NonNthAmerPlayers DESC;
Migliorare le prestazioni delle query in SQL Server

Commentare righe

Usa -- per commentare una singola riga di codice o testo

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- Conteggio giocatori
FROM PlayerStats ps

INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- Sottoquery indentata
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24

ORDER BY NonNthAmerPlayers DESC;

 

  • Commento che indica che la nuova colonna è il conteggio dei giocatori

 

  • Commento che indica che la sottoquery è indentata
Migliorare le prestazioni delle query in SQL Server

Commentare righe

Usa -- per commentare una singola riga di codice o testo

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- Conteggio giocatori
FROM PlayerStats ps
-- L'INNER JOIN inizia qui
INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- Sottoquery indentata
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24
-- Rimuovi ORDER BY, non è necessario
ORDER BY NonNthAmerPlayers DESC;

 

 

  • Commento che segna una pausa prima di INNER JOIN

 

 

  • Commento sul requisito di ORDER BY
Migliorare le prestazioni delle query in SQL Server

Commentare righe

Usa -- per commentare una singola riga di codice o testo

SELECT ps.Team, 
  COUNT(p.PlayerName) NonNthAmerPlayers -- Conteggio giocatori
FROM PlayerStats ps
-- L'INNER JOIN inizia qui
INNER JOIN 
    (SELECT PlayerName 
     FROM Players 
     WHERE Country <> 'USA'
        OR Country <> 'Canada' ) p -- Sottoquery indentata
    ON p.PlayerName = ps.PlayerName
GROUP BY ps.Team
HAVING COUNT(p.PlayerName) >=24;
-- Rimuovi ORDER BY, non è necessario
-- ORDER BY NonNthAmerPlayers DESC

 

 

 

 

 

 

  • Istruzione ORDER BY commentata
Migliorare le prestazioni delle query in SQL Server

Ayo berlatih!

Migliorare le prestazioni delle query in SQL Server

Preparing Video For Download...