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

имам нужда от помощ за оптимизиране на оракул заявка

Ето една заявка, която наивно комбинира двете заявки по-горе, така че не забравяйте да проверите и сравните резултатите от двата метода.

select 
  r.user_id, r.role_id, r.participant_code, max(status_id)
from 
  user_role r, 
  cmp_role c
where 
      r.role_id = c.role_id
  and r.active in (0,1,3)
  and r.participant_code is not null
  and sysdate between r.effective_from_date and r.effective_to_date
  and c.group_id = 3
group by 
  r.user_id, r.role_id, r.participant_code;

Не е необходимо да използвате временна таблица и след това да изтривате записи, за да получите необходимите резултати. Въпреки че може да е имало причина за използването му, може би изпълнение?

Освен това изглежда като заявката и присъединяването към USER таблицата е ненужна като USER_ID се предлага от USER_ROLES . Пропуснал съм го от запитването по-горе. Надяваме се, че това ви дава добър старт за подобряването му.



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

  2. Как мога да създам таблица с оракул, но с малки знаци?

  3. PLS-00402:изисква се псевдоним в списъка SELECT на курсора, за да се избегнат дублирани имена на колони

  4. Оракул. Изберете всички, ако параметърът е нула, в противен случай се връща конкретен проблем с елемента

  5. Конфигуриране на Oracle OCI8 за Windows 64 bit