Question

I wrote a sql join query in oracle with two table. While writing query I did not use any table alias to refer column in select clause. Now this was possible because the selected columns were having different names in both the tables.

So the question follows; is it necessary (from performance point of view) to use a table alias to select column regardless there is any similar column name in both the tables?

Please note: Right now I am under impression that "In case of join query when we do not specify table alias to select column oracle will always lookup the table metadata to find out which table has this column." So is my assumption true?

Thanks, hanumant

Était-ce utile?

La solution

No, your assumption is not true.

There are at least four reasons to use table aliases:

  • If the alias is shorter than the name it allows you to type less.
  • If you self-join a table you are required to give an alias to one or both of the tables to allow you to distinguish between them.
  • Derived tables must have an alias in some database systems (not Oracle though, I think).
  • The alias can make it clearer what the role of the table is in that particularly query.

There is no significant performance penalty from using them.

Autres conseils

To make it simple...

This fails

select 
ID,
ID
from table1 
inner join table2  on table1.ID = table2.AnotherID

This doesn't fail

select 
a.ID,
b.ID
from table1 a
inner join table2 b on a.ID = b.AnotherID

The reason the first one fails is because the Optimization Engine does not know which table to pull the ID field from. With the alias - you give it a "hint" as to which table to use. The alias is just a substitute for the full table name.

You also have to be careful where you try to access the aliased tables. For more information on this check out the SQL order of operations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top