Optimizations

Поиск
Список
Период
Сортировка
От Michael Ansley
Тема Optimizations
Дата
Msg-id 01BE1EC7.3A7A4790@MANSLEY
обсуждение исходный текст
Ответы Re: [SQL] Optimizations
Список pgsql-sql
Please would somebody tell me whether or not the optimizer sufficiently optimizes a cross join like this:
    SELECT *
    FROM table1 t1, table2, t2
    WHERE t1.field1 = t2.field4

to
    SELECT *
    FROM table1 t1
    INNER JOIN table2 t2
    ON t1.field1 = t2.field4

As I understand it, both queries will always return the same results, however, the second query will execute
substantiallyfaster, particularly as the tables involved increase in number of rows.  It seems that most people prefer
thefirst syntax, as it is probably quite simple logically, however, I suspect that the optimizer does not optimize it
absolutely.
Also, when LEFT, and OUTER JOINs are required, people forget that the JOIN keyword exists, and try to use the same
syntaxas in the first query.  If I wanted all records in table1, and only associated records from table2, then the only
waythat I know of to retrieve this information would be as follows: 
    SELECT *
    FROM table1 t1
    LEFT JOIN table2 t2
    ON t1.field1 = t2.field4

Would somebody please enlighten me (with regard to the optimizer, as well as alternatives for the last query above).  I
suspectthat a lot of people are inadvertently using cross joins, when that is not what they mean to be doing, and are
notimpressed with the speed. 

Thanks...

----------------------------------------
Michael Ansley
Intec (Ireland)
Tel  : +27 21 430-9000
Cell : +27 82 784-4229
eMail: michael.ansley@intec.co.za
ICQ  : 23465105
----------------------------------------



В списке pgsql-sql по дате отправления:

Предыдущее
От: Greg Youngblood
Дата:
Сообщение: RE: [SQL] Please help: How to determine largest of two numbers in a query?
Следующее
От: Greg Youngblood
Дата:
Сообщение: RE: Re[2]: [SQL] Please help: How to determine largest of two num bers in a query?