update语句执行计划有问题
数据库版本是9.2,遇到一个很怪异的问题:有一条update语句,发现把这条语句单独拿出来分析的话,执行计划是正确的,用的索引是对的,但是执行的时候很慢,用企业管理系下查看正在执行的状态,执行计划是不同的,请问各位高手有遇到过这种情况吗?如何解决?
------解决方案--------------------
做一下表分析吧,数据库会重新解析SQL:
execute DBMS_STATS.gather_table_stats(ownname=>'<owner>',tabname=>'<tableName>',degree=>10,estimate_percent=>10,cascade=>true,no_invalidate => false);
只要是对表的DDL操作都会引起该表相关的SQL重新解析。如ALTER TABLE...,GRANT SELECT ON tableName TO ...
也可以把SHARED POOL清空(慎重):
ALTER SYSTEM FLUSH SHARED_POOL;