Опитування після SELECT

Покращення продуктивності запитів у SQL Server

Dean Smith

Founder, Atamai Analytics

Порядок обробки після SELECT

1.  FROM

2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP
Покращення продуктивності запитів у SQL Server

«Усе» — не завжди добре

SELECT *
FROM PlayerStats;

SELECT * зручно для первинного огляду даних, але може шкодити продуктивності

PlayerName Team Position ... ...
Alex Abrines OKC SG ... ...
Quincy Acy BRK PF ... ...
Steven Adams OKC C ... ...
Bam Adebayo MIA C ... ...
... ... ... ... ...
Покращення продуктивності запитів у SQL Server

Краще — лише потрібне

SELECT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;

Вибирайте лише потрібні стовпці

PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
... ... ...
Покращення продуктивності запитів у SQL Server

Усе в JOIN

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

SELECT * у зʼєднаннях повертає дублікати стовпців зʼєднання

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 ...
... ... ... ... ...
Покращення продуктивності запитів у SQL Server

Усе потрібне в JOIN

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

Чітко вкажіть, які стовпці повертати і з яких таблиць

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
... ... ... ...
Покращення продуктивності запитів у SQL Server

Рядки з 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
Покращення продуктивності запитів у SQL Server

Відсоток у 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
Покращення продуктивності запитів у SQL Server

TOP працює лише з упорядкуванням

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
Покращення продуктивності запитів у SQL Server

Інші обмежувачі рядків

Обмежувач рядків Клаузула впорядкування База даних
TOP ORDER BY Microsoft SQL Server
ROWNUM ORDER BY Oracle
LIMIT ORDER BY PostgreSQL
Покращення продуктивності запитів у SQL Server

Де використовувати ORDER BY

Використовуйте ORDER BY в запиті:

  • Щоб дослідити дані
  • Коли є підстава повертати відсортований кінцевий результат
Покращення продуктивності запитів у SQL Server

Давайте потренуємось!

Покращення продуктивності запитів у SQL Server

Preparing Video For Download...