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

Optimer Oracle Query

Giver følgende forespørgsel de samme resultater?

SELECT c.role_id , c.subgroup , c.subgroup_description , COUNT(a.USER_ID) user_count FROM cmp_role c LEFT OUTER JOIN ( SELECT r.user_id , r.role_id FROM ( SELECT r.user_id , r.role_id , r.participant_code , MAX(r.status_id) FROM user_role r INNER JOIN cmp_role c ON c.role_id = r.role_id WHERE r.participant_code IS NOT NULL AND c.group_id = 3 GROUP BY r.user_id , r.role_id , r.participant_code HAVING MAX(r.status_id) IN ( SELECT status_id FROM user_role WHERE (Active = 1 OR (Active IN ( 0,3 ) AND SYSDATE BETWEEN effective_from_date AND effective_to_date) ) ) ) r INNER JOIN user e ON e.user_id = RTRIM(r.user_id) ) a ON a.role_id = c.role_id WHERE c.group_id = 3 GROUP BY c.role_id , c.subgroup , c.subgroup_description ORDER BY c.subgroup

Det er nemmere at læse (for mig). Hvis det giver de samme resultater, kan du allerede starte med at droppe r.participant_code og MAX(r.status_id) fra det indre udvalg.




  1. Få alle tabelnavne på en bestemt database ved hjælp af SQL-forespørgsel?

  2. SQL Server Float-datatypeberegning vs. decimal

  3. mysqldump samtidighed

  4. 7 tips til bedste praksis for PostgreSQL-bulkdataindlæsning