首页 > 解决方案 > Oracle SQL 不同环境下相同查询的不同计划

问题描述

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

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

标签: databaseoracleperformancedatabase-performance

解决方案


  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;


推荐阅读