Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Oracle scans table with "WHERE (1=0)"?

Re: Oracle scans table with "WHERE (1=0)"?

From: Joe Weinstein <joeNOSPAM_at_bea.com>
Date: Fri, 07 Apr 2006 19:21:20 -0700
Message-ID: <44371E20.9030107@bea.com>

Mark Townsend wrote:

> Joe Weinstein wrote:
> 

>>
>> Hi all. I had a customer report that the query below
>> scans the table. Can that be true, that Oracle doesn't
>> realize during construction of the query plan that
>> the search argument will never be satisfied?
>>
>> SELECT 1 FROM ACTIVITY_ENTRY WHERE (1=0) FOR UPDATE
>>
>> The customer said:
>>
>> "This query ends up scanning a very large table of ours and
>> exceeds a timeout value. Our DBA made some changes to an
>> index to temporarily workaround the issue, but we want to
>> understand why this is happening."
>>
>> Thanks,
>> Joe weinstein at BEA Systems
>>
>>

> What is this query trying to do ?
Hi, thanks. It is apparently a hackneyed attempt to verify "FOR UPDATE" syntax by executing it against multiple DBMSes, while using the addition of " WHERE (1=0)" as a generic means of altering any query so it doesn't do anything.

    I won't defend this stuff per se. I am just surprised that (if) the Oracle optimizer would miss this opportunity to avoid thrashing memory.
Joe Received on Fri Apr 07 2006 - 21:21:20 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US