Во-первых, я бы написал запрос, используя литералы даты:
Select Client_key, Portfolia_Name, Closure_date, Currency_Type, Balance
from DB_TBL
where CLOSURE_DATE between date '2020-01-01' and date '2020-01-31'
Для этого запроса вы хотите индекс на db_tbl(closure_date)
. Если у вас уже есть этот индекс, то, вероятно, у вас такой большой объем данных, что для его возврата требуется много времени. Вы можете изменить индекс на индекс покрытия, включив остальные столбцы в индекс (после CLOSURE_DATE
, который должен быть первым).
Тем не менее, если вам нужны все данные с января 2020 года, я рекомендовал бы:
where CLOSURE_DATE >= date '2020-01-01' and
CLOSURE_DATE < date '2020-02-01'
Это вернет все строки, даже те, которые имеют компонент времени. Это особенно важно в Oracle, потому что тип данных date
может иметь компонент времени - даже если пользовательские интерфейсы часто показывают только дату.