Я тоже не знаю Informix;вам придется проверить.Postgres достаточно умен, чтобы объединить отдельные просмотры индекса по переменным по отдельности очевидным способом, если он этого хочет, и он оценивает (не всегда так хорошо), лучше ли этот подход, чем сканирование таблицы.Тем не менее, я подозреваю, что составной индекс из 5 столбцов будет хорошо работать здесь.
У меня есть другое предложение: используйте значение по умолчанию, чтобы установить значения NULL для дат в бесконечные крайности;тогда вам не нужно в специальном случае NULL.Кроме того, это, вероятно, правильно отражает бизнес-логику.
Если два?представляют тот же параметр, который вы можете немного упростить (? >= date_from AND ? <= date_to)
с помощью ? IS BETWEEN date_from and date_to
.Только синтаксический сахар не повлияет на планы запросов.