是否有一种优化此查询的棘手方法

lea*_*sql 1 oracle optimization date

我正在处理一个有3008698行的表

exam_date是一个DATE领域.

但我运行的查询只想匹配月份部分.所以我做的是:

select * from my_big_table where to_number(to_char(exam_date, 'MM')) = 5;
Run Code Online (Sandbox Code Playgroud)

我相信这需要很长时间,因为列上的功能.有没有办法避免这种情况并使其更快?除了对表格进行更改外? exam_date在表中有不同的日期值.像01-OCT-10或12-OCT-10 ......等等

har*_*rpo 5

我不知道Oracle,但是做什么呢

WHERE exam_date BETWEEN first_of_month AND last_of_month
Run Code Online (Sandbox Code Playgroud)

其中两个日期是常量表达式.