Я использую Firebird SQL версия 2.1.
У меня есть строка запроса sql, в которой передаются параметры. Если переданное значение не в моей руке, но если оно передано, это правильный тип (Timestamp или else ..)
Теперь мой запрос выглядит так:
select r.*
from TableA
where r.ACTION_DATE >= iif('2019-10-09 00:00:00' is null or '2019-10-09 00:00:00' = '', r.ACTION_DATE, '2019-10-09 00:00:00')
Словом, когда передается значение, я хочу загрузить все записи, у которых дата действия больше, чем '2019-10-09 00:00:00', в противном случае получить все записи.
У меня есть индекс в столбце ACTION_DATE. Для упомянутого выше запроса индекс не применяется!
Для того же запроса без условия применяется индекс:
select r.*
from TableA
where r.ACTION_DATE >= '2019-10-09 00:00:00'