![]() | |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Dear Nice People... I have a relatively simple UPDATE statement and for some reason it is quite slow. This is it: UPDATE TC_CS_JOIN j SET LOCK_TIME=? WHERE FK_TERMINAL_CLIENT_ID = (SELECT PK_ID FROM TERMINAL_CLIENT tc WHERE tc.EXPIRES > ? AND tc.SIP_URL=?) The first param is a timestamp, the second is a string. There are indexes on EXPIRES, SIP_URL and FK_TERMINAL_CLIENT_ID. The execution plan is: Operation Object UPDATE STATEMENT () <null UPDATE () TC_CS_JOIN INDEX (RANGE SCAN) TC_CS_JOIN_FK_TC_ID TABLE ACCESS (BY INDEX ROWID) TERMINAL_CLIENT INDEX (RANGE SCAN) TC_EXPIRES_IDX which looks really good don't you think? I'm getting here execution times of 100s of milliseconds!!! That's way too slow. Let me know what you think. Yours, Emmanuel |
#3
| |||
| |||
|
|
Dear Nice People... I have a relatively simple UPDATE statement and for some reason it is quite slow. This is it: UPDATE TC_CS_JOIN j SET LOCK_TIME=? WHERE FK_TERMINAL_CLIENT_ID = (SELECT PK_ID FROM TERMINAL_CLIENT tc WHERE tc.EXPIRES > ? AND tc.SIP_URL=?) The first param is a timestamp, the second is a string. There are indexes on EXPIRES, SIP_URL and FK_TERMINAL_CLIENT_ID. The execution plan is: Operation Object UPDATE STATEMENT () <null UPDATE () TC_CS_JOIN INDEX (RANGE SCAN) TC_CS_JOIN_FK_TC_ID TABLE ACCESS (BY INDEX ROWID) TERMINAL_CLIENT INDEX (RANGE SCAN) TC_EXPIRES_IDX which looks really good don't you think? I'm getting here execution times of 100s of milliseconds!!! That's way too slow. Let me know what you think. Yours, Emmanuel |
![]() |
| Thread Tools | |
| Display Modes | |
| |