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,

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-l
Received on Tue Dec 15 2009 - 01:22:16 CST

Original text of this message