Which query is best?
From: Syed Jaffar Hussain <sjaffarhussain_at_gmail.com>
Date: Tue, 15 Dec 2009 10:22:16 +0300
Message-ID: <97b7fd2f0912142322i6fb66d61h40ed590475701ac9_at_mail.gmail.com>
Hi everyone,
| 0 | SELECT STATEMENT |
| | | 3 (100)| |
| 1 | FOR UPDATE |
| | | | |
| 2 | NESTED LOOPS | |
Date: Tue, 15 Dec 2009 10:22:16 +0300
Message-ID: <97b7fd2f0912142322i6fb66d61h40ed590475701ac9_at_mail.gmail.com>
Hi everyone,
The following simple join query on one of our business critical RAC databases with two instances was frequently leading into a dead lock situation ultimately a causing database hang scenario:
SELECT u.u_user_id, u..u_mcr_cust_id
FROM table1 U,table2 A
WHERE
A.UCS_CHNL_ID = :b1 AND A.UCS_LOGIN_NAME = :b2 AND A.UCS_USER_ID =
U.U_USER_ID FOR UPDATE
execution plan as follows:
| Id | Operation | Name |
Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT |
| | | 3 (100)| |
| 1 | FOR UPDATE |
| | | | |
| 2 | NESTED LOOPS | |
1 | 43 | 3 (0)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID| table1 | 1 | 27 |
2 (0)| 00:00:01 |
| 4 | INDEX UNIQUE SCAN | USER_CHANNEL_SUBSCRIPTION_FK4 |
1 | | 1 (0)| 00:00:01 |
| 5 | TABLE ACCESS BY INDEX ROWID| table1 |
11883 | 185K| 1 (0)| 00:00:01 |
| 6 | INDEX UNIQUE SCAN | table1_PK |
1 | | 0 (0)| | ---------------------------------------------------------------------------------------------------------------
-- Best Regards, Syed Jaffar Hussain -- http://www.freelists.org/webpage/oracle-lReceived on Tue Dec 15 2009 - 01:22:16 CST