в (3) неправильно, т.к. оптимизатор запроса не будет сохранять план такого запроса и каждый раз будет строить новый.
лучше как в (5) - генерировать несколько текстов запросов
либо если очень хочется универсальности , то
перейти от конструкции
менеджер = &Менеджер
к
(Менеджер >= & mivМенеджер) И (Менеджер < & maxМенеджер).
И для заполненного значения ссылка Менеджер = mivМенеджер
maxМенеджер = mivМенеджер+1;
А для незаполненого mivМенеджер = УникальныйИдентификатор("00000....0000")
maxМенеджер = УникальныйИдентификатор("FFFF....FFFF")
но случае применения доп условий отимизатор может выбрать не тот индекс.
такая технология подходит дискретных значений.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший