Всегда ли рекомендуется использовать псевдонимы в SQL-соединениях или вложенных запросах?

это всегда лучшая практика, чтобы использовать -

Select E.Id,D.DeptName from Employee E join Dept D on E.DeptId=D.Id

вместо -

Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id

кроме читабельности и сокращение длины запроса каковы преимущества использования псевдонимов ? Когда я проконсультировался с нашим экспертом по базе данных, он сказал запрос может сломать если есть нет псевдонимов в разы...что я не совсем понимаю...Я был бы признателен, если бы кто-нибудь поделился своими мыслями и что самое лучшее практика, которой нужно следовать...Большое спасибо.

6 ответов


  1. вы, вероятно, путаете "необходимость использовать префикс таблицы" и "необходимость использовать псевдоним" при обращении к нарушению вещей.

    запрос действительно может с большей вероятностью прерваться после добавления соединения, если вы не используете префикс таблицы; когда ваша исходная таблица и недавно добавленная таблица совместно используют столбец с тем же именем. Поэтому для будущего обслуживания всегда использовать префикс таблицы-хорошая идея для всех столбцов в запросе.

    этот проблема решается с помощью любого префикса таблицы перед столбцами, будь то реальное имя таблицы или псевдоним.
  2. псевдоним нужны (в отличие от фактического имени таблицы) при использовании одной и той же таблицы дважды.

  3. из большого опыта работы с большим количеством сложных SQL, я должен сказать, что мое мнение на 100% противоположно вашему.

    а именно, используя короткий-особенно 1 - письмо-таблица псевдоним делает для труднее чтение / ведение кода.

    когда вы отлаживаете длинный кусок SQL со сложными суставами в 2 часа ночи во время производственной аварийной ситуации, глядя назад/вперед 10-15 строк выше, чтобы увидеть, какая таблица соответствует псевдониму "e" намного сложнее.

    этот пункт имеет 2 исключения

    • когда бизнес-логика запроса использует таблицу для цели, которая очень отличается от имени таблицы.

    • когда имя таблицы неоправданно долго и неразумно из - за обстоятельств вне вашего контроля - и тогда псевдоним все равно должен быть чем-то читаемым и логичным. Е. Г. "EmployeeTableIndexedByUIDSourcedFromHR "может и обычно должно быть псевдонимами как"Employee", но не как "E"

  4. кроме того, чтобы избежать чрезмерно длинных строк, это помогает hreatly, если вы форматируете свои запросы с помощью новых строк и выравнивания:

    Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id

vs

SELECT  Employee.Id
       ,Dept.DeptName
FROM    Employee
JOIN    Dept
ON      Employee.DeptId=Dept.Id

когда вы ссылаетесь на ту же таблицу дважды, вы должны использовать псевдоним.

кроме этого, нет никакой технической причины, о которой я могу думать.


Я почти всегда делаю это, потому что ненавижу печатать полное имя таблицы, и если вы этого не сделаете, вы можете получить двусмысленные имена столбцов. Просто не используйте бессмысленные псевдонимы, такие как t1, t2 и т. д.


наиболее читаемый способ-быть явным с полным именем; на этом ваш эксперт БД и я согласны.

но когда вы их разрабатываете... псевдонимы - твои друзья, руки вниз.


  1. повышает читаемость
  2. предоставляет способ присоединиться к той же таблице при различных условиях соединения

в большинстве случаев я предпочитаю использовать полные имена таблиц. Обычно я использую псевдоним для таблиц, только если требуется внутреннее соединение между двумя таблицами в отдельных базах данных, просто чтобы сделать его немного более читаемым.

Select  Employee.Name, sales.Amount
From    Employee
        Inner Join SalesDB.dbo.Sales as Sales On Employee.ID = Sales.EmployeeID

однако, я бы рекомендовал использовать псевдонимы для своих полей, чтобы предотвратить изменения, необходимые для вызова приложений вниз по течению.

Select Employees.Name as [Name]
From   Employees