SELECT MAX(verification_id)
FROM VERIFICATION_TABLE
WHERE head = 687422
AND mbr = 23102
AND RTRIM(LTRIM(lname)) = '.iq bzw'
AND TO_CHAR(dob,'MM/DD/YYYY')= '08/10/2004'
AND system_code = 'M';
此查询需要153秒才能运行。在VERIFICATION_TABLE
中有数百万行。优化Oracle查询
我认为查询花了很长时间,因为where子句中的函数。但是,我需要在列上执行ltrim rtrim,并且日期必须在MM/DD/YYYY
格式中匹配。我该如何优化这个查询?
解释计划:
SELECT STATEMENT, GOAL = ALL_ROWS 80604 1 59
SORT AGGREGATE 1 59
TABLE ACCESS FULL P181 VERIFICATION_TABLE 80604 1 59
主键:
VRFTN_PK Primary VERIFICATION_ID
指标:
N_VRFTN_IDX2 head, mbr, dob, lname, verification_id
N_VRFTN_IDX3 last_update_date
N_VRFTN_IDX4 mbr, lname, dob, verification_id
N_VRFTN_IDX4 verification_id
虽然,在解释计划我没有看到正在使用/主键索引。这是问题吗?
你有表的主键或索引吗?它不应该花很多时间... – 2010-03-21 12:00:49