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