Oracle SQL在不同环境下针对同一查询的不同计划

时间:2018-06-19 17:19:54

标签: database oracle performance database-performance

两个非常相似的环境,相同的数据库结构,一个查询,两个执行计划:一个具有嵌套循环和索引(快速),另一个具有哈希联接和完全访问权限(慢)。

我应该执行哪些步骤来找出造成计划差异的原因?

1 个答案:

答案 0 :(得分:2)

  1. 确保两个环境上的数据库版本均相同:

SELECT * FROM V$VERSION;

  1. 然后在两种环境下检查表的统计信息:

    SELECT TABLE_NAME, NUM_ROWS, AVG_ROW_LEN, SAMPLE_SIZE, LAST_ANALYZED FROM DBA_TABLES WHERE TABLE_NAME = 'YOUR_TABLE_NAME';

  2. 如果统计信息不同,则在两个环境下均在脚本下运行:

BEGIN EXEC dbms_stats.gather_table_stats('YOUR_SCHEMA','YOUR_TABLE',cascade=>TRUE); END;