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

Hiệu suất:xếp hạng () so với truy vấn phụ. Truy vấn phụ có chi phí thấp hơn?

Tôi không thực sự chắc chắn câu hỏi của bạn là gì. Có, theo hai kế hoạch thực thi này, trong trường hợp này, phương thức truy vấn con có chi phí dự kiến ​​thấp hơn. Có vẻ không quá ngạc nhiên, vì nó có thể sử dụng chỉ mục để định vị rất nhanh hàng chính xác mà bạn quan tâm. Cụ thể trong trường hợp này, truy vấn con chỉ phải quét rất nhanh chỉ mục PK. Tình huống có thể khác nếu truy vấn con liên quan đến các cột không phải là một phần của chỉ mục.

Truy vấn sử dụng rank() phải lấy tất cả các hàng phù hợp và xếp hạng chúng. Tôi không tin rằng trình tối ưu hóa có bất kỳ logic ngắn mạch nào để nhận ra rằng đây là một truy vấn top-n và do đó, tránh một loại đầy đủ, mặc dù tất cả những gì bạn thực sự quan tâm là hàng được xếp hạng cao nhất.

Bạn cũng có thể thử biểu mẫu này, mà trình tối ưu hóa sẽ nhận ra là một truy vấn top-n. Trong trường hợp của bạn, tôi mong đợi rằng nó sẽ chỉ yêu cầu một lần quét phạm vi duy nhất trên chỉ mục, sau đó là quyền truy cập bảng.

select * 
  from (select *
          from teste_rank r
          where data_mov <= trunc(sysdate) 
            and codigo = 1
        order by data_mov desc)
  where rownum=1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - điều gì xảy ra với giao dịch trong trường hợp mất kết nối ORA-03135?

  2. Tổng của một hoạt động

  3. Làm thế nào để kết nối Android với cơ sở dữ liệu Oracle?

  4. Có bất kỳ lý do hợp lý nào của việc có các vùng bảng khác nhau cho các chỉ mục không?

  5. cách gọi hàm trong oracle