Я бы использовал условие диапазона в столбце даты:
select * from mytable where start_date >= to_date('01/Oct/2011','dd/mm/yyyy') and start_date < to_date('01/Nov/2011','dd/mm/yyyy')
Используя trunc, планировщик оракулов должен иметь возможность выбирать индекс, однако здесь вы указываете диапазон для неизмененного значения.
Я предполагаю, что в роли Джона Дойла у вас есть формат DATE
в вашей таблице. Если вы используете VARCHAR2, у вас возникают экстремальные проблемы с производительностью, потому что потребуется полное сканирование таблицы. Если хотя бы формат даты будет yyyy/mm/dd
, то использование индекса будет возможно. Рассмотрите возможность изменения дизайна базы данных, чтобы избежать проблем с производительностью.