sql >> Database teknologi >  >> RDS >> Oracle

har brug for hjælp til at optimere oracle-forespørgsler

Her er en forespørgsel, som naivt kombinerer de to forespørgsler ovenfor, så sørg for at kontrollere og sammenligne output fra de to metoder.

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;

Det er ikke nødvendigt at bruge en midlertidig tabel og derefter slette poster bagefter for at få de ønskede resultater. Selvom der kan have været en grund til dets brug, måske ydeevne?

Det ligner også forespørgslen og join til USER tabel er unødvendig som USER_ID er tilgængelig fra USER_ROLES . Jeg har udeladt det fra forespørgslen ovenfor. Forhåbentlig giver det dig en god start til at forbedre det.



  1. Hibernate, Postgresql:Kolonne x er af typen oid, men udtryk er af typen byte

  2. Bruger Oracle kortslutningsevaluering?

  3. mysql decimal og tinyint multiplikationspræcision

  4. VÆLG fra mysql-database på javascript-kald