Re: [SQL] Optimizations

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: michael(dot)ansley(at)intec(dot)co(dot)za (Michael Ansley)
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Optimizations
Date: 1998-12-03 23:23:37
Message-ID: 199812032323.SAA05873@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

Using this is a sign of an SQL engine with a bad or nonexistant
optimizer. We have a good optimizer which will properly handle such
queries.

>
> As I understand it, both queries will always return the same results, however, the second query will execute substantially faster, particularly as the tables involved increase in number of rows. It seems that most people prefer the first 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 syntax as in the first query. If I wanted all records in table1, and only associated records from table2, then the only way that 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 suspect that a lot of people are inadvertently using cross joins, when that is not what they mean to be doing, and are not impressed with the speed.

We don't support outer joins yet.

--
Bruce Momjian | http://www.op.net/~candle
maillist(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Bruce Momjian 1998-12-03 23:24:51 Re: Re[2]: [SQL] Please help: How to determine largest of two num bers in a query?
Previous Message Leslie Mikesell 1998-12-03 20:02:06 Re: Re[2]: [SQL] Query to eliminate duplicates