两个非常相似的环境,相同的数据库结构,一个查询,两个执行计划:一个具有嵌套循环和索引(快速),另一个具有哈希联接和完全访问权限(慢)。
我应该执行哪些步骤来找出造成计划差异的原因?
答案 0 :(得分:2)
SELECT * FROM V$VERSION;
然后在两种环境下检查表的统计信息:
SELECT TABLE_NAME, NUM_ROWS, AVG_ROW_LEN, SAMPLE_SIZE,
LAST_ANALYZED FROM DBA_TABLES WHERE TABLE_NAME = 'YOUR_TABLE_NAME';
如果统计信息不同,则在两个环境下均在脚本下运行:
BEGIN
EXEC dbms_stats.gather_table_stats('YOUR_SCHEMA','YOUR_TABLE',cascade=>TRUE);
END;