Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tối ưu hóa truy vấn Oracle

Truy vấn sau có tạo ra kết quả giống nhau không?

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

Nó dễ đọc hơn (đối với tôi). Nếu nó tạo ra kết quả tương tự, bạn đã có thể bắt đầu với việc bỏ r.participant_codeMAX(r.status_id) từ lựa chọn bên trong.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. thu thập thông tin dba_users trong cơ sở dữ liệu Oracle khi được kết nối với tư cách người dùng

  2. Cách tạo sơ đồ mối quan hệ thực thể (ER) bằng Oracle SQL Developer

  3. Lỗi khi thực thi thủ tục được lưu trữ Oracle trong SSRS:PLS-00306:sai số hoặc loại đối số trong lệnh gọi tới

  4. Làm cách nào để tắt hết hạn mật khẩu Oracle?

  5. Di chuyển dữ liệu giữa các DBMS khác nhau