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

sql оптимизатор за голяма Db таблица

Вероятно трябва да започнете с ОБЯСНЕНИЕ НА ПЛАН .

След това редактирайте въпроса си и публикувайте SQL оператора и резултата от ОБЯСНЕНИЕ НА ПЛАН.

По-късно. . .

Няма да ви бъда много полезен по този въпрос. 269 ​​реда, поне 29 SELECT, паралелни заявки, отдалечени бази данни, външни съединения (стар стил) и т.н.

Най-добрият съвет, който мога да ви дам, е

  • получете повече информация от EXPLAIN PLAN и
  • опростете проблема.

таблица с план има повече колони, отколкото обикновено се публикуват. Колоните ЦЕНА, КАРДИНАЛНОСТ, БАЙТОВЕ и ВРЕМЕ може да са полезни при приоритизирането на вашите усилия за настройка.

Имате 10 пълни сканирания на таблици в тази заявка. ("ПЪЛЕН ДОСТЪП ДО ТАБЛИЦАТА" в плана на заявката.) Това обикновено е лош знак; пълните сканирания на таблици често отнемат сравнително дълго време. Не е винаги лош знак. Пълното сканиране на малка таблица може да бъде по-бързо от сканирането на индекс.

Започнете, като получите изход EXPLAIN PLAN за всеки от 29 оператора SELECT във вашата заявка. Ако някой от тях покаже пълно сканиране на таблица, вероятно можете да подобрите тяхната производителност с подходящи индекси . (Oracle поддържа много различни видове индекси. Не пренебрегвайте възможностите за индекси с няколко колони.) Във всеки случай изходът на EXPLAIN PLAN ще ви помогне да идентифицирате най-бавния от 29 SELECT.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изберете конкретно име на възел и неговите стойности в XML с помощта на Oracle SQL заявка?

  2. Проблем с числовия формат в Oracle

  3. Защо в Oracle SQL изтритите (некоммитирани) редове не се виждат в текущата сесия, но се виждат в други сесии?

  4. DBMS_SCHEDULER.DROP_JOB само ако съществува

  5. Oracle sqlSubtract между две дати