Aliasing

Förbättra frågeprestanda i SQL Server

Dean Smith

Founder, Atamai Analytics

Vad är aliasing?

  • Används i frågor för att identifiera:
    • Tabeller
    • Kolumner
    • Underfrågor
  • Tillfälligt, gäller bara när frågan körs
  • Gör frågan lättare att läsa
  • Kan vara obligatoriskt
Förbättra frågeprestanda i SQL Server

Varför använda aliasing?

  • Undvik upprepning av långa tabell- eller kolumnnamn
  • Identifiera enkelt joinade tabeller och tillhörande kolumner
  • Identifiera nya kolumner
  • Identifiera underfrågor
  • Undvik tvetydighet när kolumner från joinade tabeller delar samma namn
  • Byt namn på kolumner
Förbättra frågeprestanda i SQL Server

Joinade tabeller – tvetydigt kolumnnamn

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'.
Förbättra frågeprestanda i SQL Server

Joinade tabeller – ge tabeller alias

-- 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
... ... ... ...
Förbättra frågeprestanda i SQL Server

Namngivna kolumner

-- 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
... ... ... ...
Förbättra frågeprestanda i SQL Server

Nya kolumner

-- 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
... ... ...
Förbättra frågeprestanda i SQL Server

Underfrågor

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
... ... ...
Förbättra frågeprestanda i SQL Server

Nu kör vi en övning!

Förbättra frågeprestanda i SQL Server

Preparing Video For Download...