sql >> Database >  >> RDS >> Oracle

hulp nodig bij het optimaliseren van oracle-query

Hier is een zoekopdracht die de twee bovenstaande zoekopdrachten naïef combineert, dus zorg ervoor dat u de resultaten van de twee methoden controleert en vergelijkt.

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;

Het is niet nodig om een ​​tijdelijke tabel te gebruiken en daarna records te verwijderen om de vereiste resultaten te krijgen. Hoewel er misschien een reden was voor het gebruik ervan, misschien prestaties?

Het lijkt ook op de zoekopdracht en voeg u bij de USER tabel is niet nodig omdat de USER_ID is verkrijgbaar bij USER_ROLES . Ik heb het weggelaten uit de bovenstaande query. Hopelijk geeft dat je een goed begin om het te verbeteren.



  1. orakel | dubbele records verwijderen

  2. Is er iets analoog aan een split()-methode in mySql?

  3. Leeg bestand na downloaden

  4. Hoe het aantal ongebruikte/gebruikte verbindingen in de nodejs mysql-verbindingspool te krijgen?