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

Оптимизирайте Oracle Query

Следващата заявка дава ли същите резултати?

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

По-лесно е за четене (за мен). Ако дава същите резултати, вече можете да започнете с премахването на r.participant_code и MAX(r.status_id) от вътрешния избор.




  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

  2. два външни ключа към един и същи числов тип данни и го препраща към две таблици

  3. Разлика в критериите за търсене между Like срещу Contains() в oracle

  4. Ред за всяка дата от началната до крайната дата

  5. скрипт, който изтегля данни от txt файл в клаузата where