Đặt bí danh (Aliasing)

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

Dean Smith

Founder, Atamai Analytics

Aliasing là gì?

  • Dùng trong truy vấn để xác định:
    • Bảng
    • Cột
    • Truy vấn con
  • Tạm thời, chỉ áp dụng khi chạy truy vấn
  • Giúp truy vấn dễ đọc hơn
  • Đôi khi bắt buộc
Cải thiện hiệu năng truy vấn trong SQL Server

Vì sao dùng aliasing?

  • Tránh lặp tên bảng/cột dài
  • Dễ nhận biết bảng đã JOIN và cột liên quan
  • Nhận diện cột mới
  • Nhận diện truy vấn con
  • Tránh mơ hồ khi các bảng JOIN có cột trùng tên
  • Đổi tên cột
Cải thiện hiệu năng truy vấn trong SQL Server

JOIN bảng - tên cột mơ hồ

SELECT CountryName, 
       Code2, 
       Capital, 
       Pop2017
FROM Nations
INNER JOIN Cities
  ON Capital = CityName;
-----------------------------------------------
-- LỖI: cột Pop2017 có trong
cả bảng Nations và Cities

Ambiguous column name 'Pop2017'.
Cải thiện hiệu năng truy vấn trong SQL Server

JOIN bảng - đặt bí danh bảng

-- Đặt bí danh bảng: Nations là n, Cities là c
SELECT n.CountryName, 
       n.Code2, 
       n.Capital, 
       c.Pop2017 -- Dân số thành phố
FROM Nations AS n
INNER JOIN Cities AS c
  ON n.Capital = c.CityName;
CountryName Code2 Capital Pop2017
United Kingdom GB London 346774
Canada CA Ottawa 874433
France FR Paris 10437
Reunion RE Saint-Denis 1067
... ... ... ...
Cải thiện hiệu năng truy vấn trong SQL Server

Đổi tên cột

-- Đặt bí danh cho cột
SELECT n.CountryName AS Country, 
       n.Code2 AS CountryCode, 
       n.Capital, 
       c.Pop2017 AS Population
FROM Nations AS n
INNER JOIN Cities AS c
  ON n.Capital = c.CityName;
Country CountryCode Capital Population
United Kingdom GB London 346774
Canada CA Ottawa 874433
France FR Paris 10437
Reunion RE Saint-Denis 1067
... ... ... ...
Cải thiện hiệu năng truy vấn trong SQL Server

Cột mới

-- Cột mới đặt bí danh là MaxMagnitude
SELECT Country, 
       NearestPop AS City,
       MAX(Magnitude) AS MaxMagnitude
FROM Earthquakes 
GROUP BY Country, NearestPop;
Country City MaxMagnitude
PE Acar 7.1
US Aguadilla 7.7
MX Aguililla 7.2
PW Airai 7.8
PG Aitape 7.6
... ... ...
Cải thiện hiệu năng truy vấn trong SQL Server

Truy vấn con (Sub-query)

SELECT n.CountryName AS Country, 
       n.Capital, 
       e.MaxMagnitude
FROM Nations n
INNER JOIN
        (SELECT Country, NearestPop AS City
                ,MAX(Magnitude) AS MaxMagnitude
        FROM Earthquakes 
        GROUP BY Country, NearestPop) e 
              -- Truy vấn con đặt bí danh là e
    ON n.Code2 = e.Country AND n.Capital = e.City;
Country Capital MaxMagnitude
Fiji Suva 7.9
Guam Hagatna 7.8
Peru Lima 7.6
Turkmenistan Ashgabat 7.3
... ... ...
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...