Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54369
Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?
Где-то нарыл, не помню уже где, что весьма желательно и что запрос
SELECT t1.*, t2.*
FROM table1 t1,
     table2 t2
WHERE t1.ID = t2.ID
чем-то лучше, чем
SELECT table1.*, table2.*
FROM table1,
     table2
WHERE table1.ID = table2.ID
Правда или миф?
22 мар 06, 17:26    [2477612]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 812
с алиасиком компактнее т.к. синоним как правило 1-2 буква
а таблицы некоторые поэты называют аж во все 30 букв :)
22 мар 06, 17:29    [2477630]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
?
Guest

А иногда без алиасов вообще не обойтись - при двойном (тройном и т.д.) обращении к одной и той же таблице в рамках одного запроса.
22 мар 06, 17:32    [2477650]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54369
PPA
с алиасиком компактнее т.к. синоним как правило 1-2 буква
а таблицы некоторые поэты называют аж во все 30 букв :)
это я согласен и сам так пишу
22 мар 06, 17:32    [2477652]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3909
Дальше что? Какую еще тему создашь? Как дети малые, ей богу...
22 мар 06, 17:36    [2477676]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54369
Apex
Дальше что? Какую еще тему создашь? Как дети малые, ей богу...
а по существу можешь?
22 мар 06, 17:37    [2477680]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Maxifly
Member

Откуда:
Сообщений: 522
Как говорил один еврей про обрезание:
Ну, во-первых, это красиво...
22 мар 06, 17:38    [2477681]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116064
Я думаю, здесь нужно разделять.
1. обязательность.
2. желательность с точки зрения перформанса
3. желательность с точки зрения читабельности.

1. Если надо, то надо, уже обсуждалось.
2. Мне неизвестно.
3. Да, наверное иногда, но не тогда, когда вместо
emp пишут а, а вместо dept - b.
22 мар 06, 17:41    [2477700]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
Обязательности, разумеется, нет. От того, что Вы будете писать запросы вторым способом, небо на землю не рухнет.

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

- несколько включений в запрос одной и той же таблицы

- использование квалифицированных имен (с именем схемы), включая одноименные таблицы в разных схемах

- подмена в большом запросе обращения к таблице на обращение к построенному над таблицей inline view

- использование dblink-ов

- наверное еще что-нибудь в том же духе.

Безусловно, для того, чтобы код с алиасами был лучше, необходимо иметь удобную и понятную систему раздачи алиасов. Если называть алиасы a, b, c или t1, t2, t3 - будет хуже.
22 мар 06, 17:52    [2477763]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3909
andreymx
Apex
Дальше что? Какую еще тему создашь? Как дети малые, ей богу...
а по существу можешь?

Могу. Флуд на форуме, чтобы подразнить вот этого перца, не самое лучшее занятие. Давайте создадим еще с десяток таких же тем и будем с умным видом рассуждать о том, что если писать шрифтом типа arial, то будет где-то что-то тормозить.
22 мар 06, 17:53    [2477771]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3909
Предлагаю такие названия:"Миф или нет. Обязательно ли всегда указывать префикс схемы?" или "Миф или нет. Обязательно ли всегда присваивать алиасы полям в запросе?"
-------------------------------------------------------
Автор благодарит алфавит за любезно предоставленные ему буквы.
22 мар 06, 17:57    [2477797]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
Давайте еще обсудим миф, что все очкарики умные! :)

PS без обид, ничего личного
22 мар 06, 18:01    [2477817]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
softwarer
Обязательности, разумеется, нет.


Чушь. Есть случаи, когда применение алиаса необходимо. Например для идентификации отношений при самообъединении, для использования в Object Access Expressions, может быть ещё где то.

В остальных случаях применение алиасов диктуется внешними субъективными и объективными причинами.

Относительно производительности. Наверняка алиасы влияют на производительность запроса (скорее всего возможно как положительное так и отрицательное влияние), но это влияние как правило пренебрежимо мало.
22 мар 06, 18:22    [2477925]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
mcureenab
Чушь.

Гон.

mcureenab
Есть случаи, когда применение алиаса необходимо.

А кто заставляет пользоваться этими случаями?
22 мар 06, 18:28    [2477958]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
softwarer
А кто заставляет пользоваться этими случаями?
А как быть в такого рода запросах без алиасов?
select * from items a
where 1 < (select count(*) from items b where a.item_no = b.item_no)
22 мар 06, 18:31    [2477973]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Просто так
Guest
mcureenab

Относительно производительности. Наверняка алиасы влияют на производительность запроса (скорее всего возможно как положительное так и отрицательное влияние), но это влияние как правило пренебрежимо мало.

Думаю, что так оно и есть. Но справедливости ради скажу, что лет 10 назад, в эпоху 7-й версии, действительно существовало мнение, что алиасы сокращают время разбора SQL-предложения. И даже в какой-то из книжек приводились доказательства. Дай только бог памяти, в какой же это было...
22 мар 06, 18:32    [2477977]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
Tolmachov Dmitiry
А как быть в такого рода запросах без алиасов?
select * from items a
where 1 < (select count(*) from items b where a.item_no = b.item_no)

Хм. Это я бы сказал элементарно:

select * from items
where item_no in (select item_no from items group by item_no having count(*)>1)

Попутно - и производительность у второго запроса я бы ожидал малость лучшую :) А глобально - я не знаю, что именно сейчас нашло на моего уважаемого в целом собеседника, но для экономии времени и неучастия в предлагаемой им игре словами: я уверен, что не существует практической задачи, которую нельзя было бы удовлетворительно решить без применения алиасов в запросах. Что понимается под "практической задачей": текст, который может встретиться в реальном разумном ТЗ. Что понимается под "удовлетворительно" - то и понимается: работать будет. Оно не обязано быть лучшим решением, что я и указал в своем исходном письме, где говорил, что полагаю использование алиасов более правильным подходом.
22 мар 06, 18:46    [2478045]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
?
Guest
softwarer
Я бы не стал спорить, что прямо без алиасов не обойтись, но ИМХО как-то удобнее их использовать, например, если таблица ссылается на себя же, чем городить трёхэтажные конструкции.

P.S. Если звёзды горят, то это кому-то нужно.
22 мар 06, 18:57    [2478080]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Изя Исакович
Guest
Просто так
mcureenab

Относительно производительности. Наверняка алиасы влияют на производительность запроса (скорее всего возможно как положительное так и отрицательное влияние), но это влияние как правило пренебрежимо мало.

Думаю, что так оно и есть. Но справедливости ради скажу, что лет 10 назад, в эпоху 7-й версии, действительно существовало мнение, что алиасы сокращают время разбора SQL-предложения. И даже в какой-то из книжек приводились доказательства. Дай только бог памяти, в какой же это было...

Надо отметить, что мнение верное. И от появления новых версий Oracle актуальность не снизилась.

P.S. Можно еще учесть меньшую память, занимаемую текстом в library cache, время на вычисление hash value и последующее сравнение текста при parse, трафик по сети опять же таки при каждом parse, если клиент работает по сети, etc :)
22 мар 06, 20:03    [2478259]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
Просто так
mcureenab

Относительно производительности. Наверняка алиасы влияют на производительность запроса (скорее всего возможно как положительное так и отрицательное влияние), но это влияние как правило пренебрежимо мало.

Думаю, что так оно и есть. Но справедливости ради скажу, что лет 10 назад, в эпоху 7-й версии, действительно существовало мнение, что алиасы сокращают время разбора SQL-предложения. И даже в какой-то из книжек приводились доказательства. Дай только бог памяти, в какой же это было...


А что тут доказывать? Запускаешь Оракл под дебагером и смотришь сколько тактов CPU нужно потратить для запроса с алиасами и без. Наверняка найдутся запросы где алиасы рулят и запросы где тормозят.
С одной стороны при наличии алиаса требуется распарсить дополнительную синтаксическую конструкцию, запомнить дополнительный идентификатор, с другой, короткий алиас уменьшает длину запроса, тем самым сокращает время его лексического анализа.
22 мар 06, 20:08    [2478270]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
softwarer
mcureenab
Чушь.

Гон.

mcureenab
Есть случаи, когда применение алиаса необходимо.

А кто заставляет пользоваться этими случаями?


Ну если не пользоваться Ораклом вообще...
Однако, смотри Object Access Expressions. Эта хрень без алиасов не работает. Альтернатива - отказаться от объектных функций SQL.
22 мар 06, 20:18    [2478290]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116064
andreymx
Где-то нарыл, не помню уже где, что весьма желательно и что запросSELECT t1.*, t2.*
FROM table1 t1,
table2 t2
WHERE t1.ID = t2.ID

чем-то лучше, чемSELECT table1.*, table2.*
FROM table1,
table2
WHERE table1.ID = table2.ID

Правда или миф?

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



Мне кажется, что последующая излишне горячая дискуссия была вызвана
вырыванием слов softwarer из контекста вопроса andreymx.
Softwarer, я был немного удивлен Вашей реакцией. Вместо того, чтобы обратить внимание на передержки, Вы углубились в схоластику "работающих запросов без алиасов" и оказались в несколько невыгодной позиции. ИМХО , эмоции...
23 мар 06, 00:41    [2478874]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54369
кстати, шутникам неплохо бы почитать здесь об одном из вариантов, когда желательны псевдонимы, они же алиасы:

How PL/SQL Resolves Identifier Names
Avoiding Inner Capture in DML Statements
You can avoid inner capture in DML statements by following these rules:
Specify an alias for each table in the DML statement.
Keep table aliases unique throughout the DML statement.
Avoid table aliases that match schema names used in the query.
Qualify each column reference with the table alias.
23 мар 06, 08:47    [2479257]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3909
andreymx
кстати, шутникам неплохо бы почитать здесь об одном из вариантов, когда желательны псевдонимы, они же алиасы

Вы лучше еще раз перечитайте как вы вопрос задали.
автор
Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?

Лично у меня сложилось впечатление, что шутник это вы. Ей богу, больше похоже не на вопрос, а на издевку над пдобными вопросами.
А если вы интересовались серьезно, то почему остальные должны за вас додумывать контекст вопроса?

andreymx
а по существу можешь?

Я стараюсь использовать, мне так удобнее.
andreymx
обязательно ли

Нет, не обязательно.
andreymx
желательны псевдонимы

Да, согласен, иногда желательно.
23 мар 06, 10:11    [2479563]     Ответить | Цитировать Сообщить модератору
 Re: Миф или нет: обязательно ли указывать алиасы для таблиц в запросе?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
softwarer
.. Если называть алиасы (для таблиц) a, b, c или t1, t2, t3 - будет хуже.

Категорически несогласен.
Если число таблиц в запросе невелико (вроде психологи говорят - порог для каждого человека индивидуален, в среднем типа от 5 до 9), то раз посмотрев, даже в чужом запросе, что же есть тут a,b,c - проникаюсь без напряга. Даже с удовольствием вытесняя из своей 'верхней' памяти их настоящие (поэтические (с) :) имена..
А если таблиц много - как алиасы не называй - напряг при чтении всяко посетит, как и при многовложенности запросов.
23 мар 06, 11:17    [2480029]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить