Aliasing

Improving Query Performance in SQL Server

Dean Smith

Founder, Atamai Analytics

Co je aliasing?

  • Používá se v dotazech k identifikaci:
    • Tabulek
    • Sloupců
    • Poddotazů
  • Dočasný, platí pouze při spuštění dotazu
  • Zlepšuje čitelnost dotazu
  • Může být vyžadován
Improving Query Performance in SQL Server

Proč používat aliasing?

  • Zamezuje opakovanému použití dlouhých názvů tabulek nebo sloupců
  • Usnadňuje identifikaci spojených tabulek a jejich sloupců
  • Identifikuje nové sloupce
  • Identifikuje poddotazy
  • Zamezuje nejednoznačnosti při shodných názvech sloupců
  • Přejmenování sloupců
Improving Query Performance in SQL Server

Spojené tabulky – nejednoznačný název sloupce

SELECT CountryName, 
       Code2, 
       Capital, 
       Pop2017
FROM Nations
INNER JOIN Cities
  ON Capital = CityName;
-----------------------------------------------
-- ERROR, Pop2017 column is in 
both the Nations and Cities tables

Ambiguous column name 'Pop2017'.
Improving Query Performance in SQL Server

Spojené tabulky – aliasing názvů tabulek

-- Alias tables; Nations as n and Cities as c
SELECT n.CountryName, 
       n.Code2, 
       n.Capital, 
       c.Pop2017 -- City population
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
... ... ... ...
Improving Query Performance in SQL Server

Přejmenované sloupce

-- Alias columns; 
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
... ... ... ...
Improving Query Performance in SQL Server

Nové sloupce

-- New colunm aliased as 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
... ... ...
Improving Query Performance in SQL Server

Poddotazy

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 
              -- Sub-query aliased as 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
... ... ...
Improving Query Performance in SQL Server

Lass uns üben!

Improving Query Performance in SQL Server

Preparing Video For Download...