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

Cách tối ưu hóa một truy vấn Oracle có to_char trong mệnh đề where cho ngày

Nếu bạn tạo một kế hoạch thực thi cho truy vấn đầu tiên của bạn ...

explain plan for 
SELECT bunch,of,stuff,create_date
FROM myTable
WHERE TO_CHAR (create_date,'MM/DD/YYYY)' >= '04/10/2010'
AND TO_CHAR (create_date, 'MM/DD/YYYY') <= '04/10/2010'
/

... bạn sẽ thấy rằng nó quét toàn bộ bảng. Đó là bởi vì to_char() ngăn việc sử dụng chỉ mục của bạn vào CREATE DATE.

Bạn không cho biết mất bao lâu để trả về kết quả khi bạn chạy ...

SELECT bunch,of,stuff,create_date
FROM myTable
WHERE             
create_date >= to_timestamp('04/10/2010 00:00:00.000000','MM/DD/YYYY HH24:MI:SS.FF') 
AND 
create_date <= to_timestamp('04/10/2010 23:59:59:123000','MM/DD/YYYY HH24:MI:SS.FF')
/

... nhưng tôi mong đợi nó chỉ gần 0,14 giây hơn 4 phút.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mã hóa trong ROracle

  2. Làm thế nào để hồi tưởng lại khi chúng ta có thẻ dữ liệu

  3. Sự cố với TransactionScope và Oracle

  4. Oracle ROWID dưới dạng tham số hàm / thủ tục

  5. Làm thế nào để thêm 2 ngày trong Oracle sp?