Всегда ли полезно использовать псевдонимы в соединениях SQL или вложенных запросах? - PullRequest
6 голосов
/ 15 сентября 2010

Всегда ли лучше использовать -

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 ]

14 голосов
/ 15 сентября 2010
  1. Вы, вероятно, путаете «необходимость использовать префикс таблицы» и «необходимость использовать ALIAS», когда речь идет о взломе.

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

    Однако эта проблема решается с помощью ЛЮБОГО префикса таблицы перед столбцами, будь то реальное имя таблицы или псевдоним.

  2. Псевдоним необходим (в отличие от фактического имени таблицы), когда вы используете одну и ту же таблицу дважды.

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

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

    Когда вы отлаживаете длинный кусок SQL со сложными соединениями в 2 часа ночи во время производственной аварийной ситуации, оглянуться назад / вперед на 10-15 строк выше, чтобы увидеть, какая таблица соответствует псевдониму «е», НАМНОГО сложнее.

    Эта точка имеет 2 исключения

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

    • когда имя таблицы неоправданно длинное и неразумное из-за обстоятельств, не зависящих от вас, - и тогда псевдоним должен быть чем-то понятным и логичным. Например. «EmployeeTableIndexedByUIDSourcedFromHR» может и обычно быть псевдонимом как «Employee», но не как «E»

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

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

против

SELECT  Employee.Id
       ,Dept.DeptName
FROM    Employee
JOIN    Dept
ON      Employee.DeptId=Dept.Id
4 голосов
/ 15 сентября 2010

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

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

3 голосов
/ 15 сентября 2010

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

1 голос
/ 15 сентября 2010

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

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

0 голосов
/ 15 сентября 2010

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

Select Employees.Name as [Name]
From   Employees
0 голосов
/ 15 сентября 2010
  1. Увеличивает читаемость
  2. Предоставляет способ объединения одной и той же таблицы при разных условиях соединения.
...