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

cần trợ giúp tối ưu hóa truy vấn oracle

Đây là một truy vấn kết hợp nguyên bản hai truy vấn trên, vì vậy hãy đảm bảo rằng bạn kiểm tra và so sánh kết quả đầu ra từ hai phương pháp.

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;

Không nhất thiết phải sử dụng một bảng tạm thời và sau đó xóa các bản ghi sau đó để có được kết quả cần thiết. Mặc dù, có thể có một lý do cho việc sử dụng nó, có thể là hiệu suất?

Ngoài ra, nó trông giống như truy vấn và tham gia vào USER bảng là không cần thiết vì USER_ID có sẵn từ USER_ROLES . Tôi đã bỏ qua nó khỏi truy vấn ở trên. Hy vọng rằng điều đó mang lại cho bạn một khởi đầu tốt để cải thiện nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng SQL không tồn tại

  2. Oracle Sql Loader ORA-01722:số không hợp lệ khi tải tệp CSV với phần cuối dòng Windows

  3. Trình tự Oracle không tạo ra số liên tục

  4. Tự tham gia vào oracle với các ví dụ

  5. Khi thiết kế cơ sở dữ liệu, cách ưu tiên để lưu trữ nhiều giá trị true / false là gì?