Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Optimalkan Permintaan Oracle

Apakah kueri berikut menghasilkan hasil yang sama?

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

Lebih mudah dibaca (bagi saya). Jika hasilnya sama, Anda sudah bisa mulai dengan menjatuhkan r.participant_code dan MAX(r.status_id) dari pilihan dalam.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah anti-join lebih efisien daripada left outer join?

  2. INSERT dengan ORDER di Oracle

  3. JPA - EclipseLink - Cara mengubah skema default

  4. Bergabunglah dengan dua tabel dengan kolom dengan beberapa entri untuk tabel lainnya

  5. Oracle -- menemukan nilai dengan spasi awal atau akhir