Oracle
 sql >> база данни >  >> RDS >> Oracle

oracle - същата заявка, но различен план в 11g и 12c

Планът за изпълнение, избран от избрания оптимизатор, може да варира значително дори между две среди на една и съща версия, а не само 11g и 12c. Зависи от много фактори, но най-вече от:

  • Брой редове в таблицата (подобни ли са между envs?)
  • Какви индекси присъстват (и двете бази данни имат ли същите индекси?)
  • Има ли статистически данни за таблицата и индексите и колко актуални са те? Ако не е актуална, моля, съберете статистика за таблиците и индексите.

Ако можете да публикувате тези подробности, мога да дам по-полезен отговор.

Освен това кодът изглежда като автоматично генериран, ако имате свободата да го променяте, въз основа на детайлите, можем да предложим пренаписана заявка и/или съвети.

Ако не можете да модифицирате кода, можете да принудите план с SQL Plan Management (SPM) - експортиране от базата данни, където работи по-бързо, и импортиране в друга база данни.

АКТУАЛИЗАЦИЯ

Използвайте тази опростена версия на SQL, за да генерирате плана:

SELECT * FROM DMProgDate_00001
 WHERE ProgressOID IN ( 
   SELECT OID FROM DMProgress_00001 
    WHERE Project = 'Moho'
      AND Phase = 'Procurement'
      AND Displine = 'Q340'
      AND ROWNUM <= 20
    ORDER BY actCode
  );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на LogMiner за намиране на текущи промени

  2. Научете за пакета DBMS_OUTPUT в Oracle

  3. Подреждане на Oracle по различни

  4. Генериране на SQL*Plus скрипт с помощта на SQL*Plus

  5. Как да превърнем 2 заявки с общи колони (A, B) и (A, C) само в една (A, B, C)?