Всегда ли рекомендуется использовать псевдонимы в 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 ответов
-
вы, вероятно, путаете "необходимость использовать префикс таблицы" и "необходимость использовать псевдоним" при обращении к нарушению вещей.
запрос действительно может с большей вероятностью прерваться после добавления соединения, если вы не используете префикс таблицы; когда ваша исходная таблица и недавно добавленная таблица совместно используют столбец с тем же именем. Поэтому для будущего обслуживания всегда использовать префикс таблицы-хорошая идея для всех столбцов в запросе.
этот проблема решается с помощью любого префикса таблицы перед столбцами, будь то реальное имя таблицы или псевдоним. псевдоним нужны (в отличие от фактического имени таблицы) при использовании одной и той же таблицы дважды.
-
из большого опыта работы с большим количеством сложных SQL, я должен сказать, что мое мнение на 100% противоположно вашему.
а именно, используя короткий-особенно 1 - письмо-таблица псевдоним делает для труднее чтение / ведение кода.
когда вы отлаживаете длинный кусок SQL со сложными суставами в 2 часа ночи во время производственной аварийной ситуации, глядя назад/вперед 10-15 строк выше, чтобы увидеть, какая таблица соответствует псевдониму "e" намного сложнее.
этот пункт имеет 2 исключения
когда бизнес-логика запроса использует таблицу для цели, которая очень отличается от имени таблицы.
когда имя таблицы неоправданно долго и неразумно из - за обстоятельств вне вашего контроля - и тогда псевдоним все равно должен быть чем-то читаемым и логичным. Е. Г. "
EmployeeTableIndexedByUIDSourcedFromHR
"может и обычно должно быть псевдонимами как"Employee
", но не как "E
"
-
кроме того, чтобы избежать чрезмерно длинных строк, это помогает 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 и т. д.
наиболее читаемый способ-быть явным с полным именем; на этом ваш эксперт БД и я согласны.
но когда вы их разрабатываете... псевдонимы - твои друзья, руки вниз.
- повышает читаемость
- предоставляет способ присоединиться к той же таблице при различных условиях соединения
в большинстве случаев я предпочитаю использовать полные имена таблиц. Обычно я использую псевдоним для таблиц, только если требуется внутреннее соединение между двумя таблицами в отдельных базах данных, просто чтобы сделать его немного более читаемым.
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