#sql #date #indexing #expression
#sql #Дата #индексирование #выражение
Вопрос:
Я пытаюсь реорганизовать некоторые запросы для использования индекса.
Запрос выглядит следующим образом:
SELECT dateField,valueField
FROM myTable
WHERE current_date - dateField <= 30
Чтобы иметь возможность эффективно использовать индекс, я бы хотел избавиться от выражения в поле даты.
К чему я смог его преобразовать
SELECT dateField,valueField
FROM myTable
WHERE dateField >= current_date - 30
Но я не уверен, правильно ли это, учитывая, что «30» является параметром и иногда меняется.
Комментарии:
1. Это должно работать как с параметром, так и с константой.
2. Но действительно ли эти два запроса эквивалентны?
3. если
dateField
имеетDATE
тип даты, да, эти два запроса эквивалентны. В противном случае округление может сделать их немного разными.