代码之家  ›  专栏  ›  技术社区  ›  sinedsem

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

  •  0
  • sinedsem  · 技术社区  · 8 年前

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

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

    1 回复  |  直到 8 年前
        1
  •  2
  •   Ikrom    8 年前
    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;