Truy vấn sau SELECT

Cải thiện hiệu năng truy vấn trong SQL Server

Dean Smith

Founder, Atamai Analytics

Thứ tự xử lý sau SELECT

1.  FROM

2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP
Cải thiện hiệu năng truy vấn trong SQL Server

Không phải lúc nào ALL cũng tốt

SELECT *
FROM PlayerStats;

SELECT * tốt để khảo sát dữ liệu nhưng có thể gây hại hiệu năng

PlayerName Team Position ... ...
Alex Abrines OKC SG ... ...
Quincy Acy BRK PF ... ...
Steven Adams OKC C ... ...
Bam Adebayo MIA C ... ...
... ... ... ... ...
Cải thiện hiệu năng truy vấn trong SQL Server

Chỉ cần đủ là tốt hơn

SELECT PlayerName, 
        Team, 
        TotalPoints
FROM PlayerStats;

Chỉ chọn các cột cần thiết

PlayerName Team TotalPoints
Alex Abrines OKC 353
Quincy Acy BRK 411
Steven Adams OKC 1056
Bam Adebayo MIA 477
... ... ...
Cải thiện hiệu năng truy vấn trong SQL Server

ALL trong JOIN

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

SELECT * trong JOIN trả về cột nối bị lặp

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 ...
... ... ... ... ...
Cải thiện hiệu năng truy vấn trong SQL Server

Những gì cần trong JOIN

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

Chỉ rõ cột cần trả về và thuộc bảng nào

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
... ... ... ...
Cải thiện hiệu năng truy vấn trong SQL Server

Các dòng ở 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
Cải thiện hiệu năng truy vấn trong SQL Server

Phần trăm ở 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
Cải thiện hiệu năng truy vấn trong SQL Server

Không có trên hay dưới

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
Cải thiện hiệu năng truy vấn trong SQL Server

Các bộ giới hạn dòng khác

Bộ giới hạn dòng Mệnh đề sắp xếp CSDL
TOP ORDER BY Microsoft SQL Server
ROWNUM ORDER BY Oracle
LIMIT ORDER BY PostgreSQL
Cải thiện hiệu năng truy vấn trong SQL Server

Khi nào dùng ORDER BY

Dùng ORDER BY trong truy vấn:

  • Để khảo sát dữ liệu
  • Khi có lý do chính đáng để kết quả cuối được sắp xếp
Cải thiện hiệu năng truy vấn trong SQL Server

Ayo berlatih!

Cải thiện hiệu năng truy vấn trong SQL Server

Preparing Video For Download...