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.