В общем - общий вывод простой. Универсального подхода не существует. Надо разбираться с каждым конкретным случаем. Использование литералов дает гарантированное увеличение нагрузки на процессора, использование переменных - увеличивает (но не гарантирует) шансы на генерацию некорректного плана запроса, что увеличиваетт нагрузку на жесткие диски и память. По моему убеждению, чаще всего на современных серверах, узким местом являются именно диски. Скажем - в 2003 году типичным сервером БД на внедрении Аксапты был двухпроцессорный Xeon. Теперь - двухпроцессорный ЧЕТЫРЕХЯДЕРНЫЙ Xeon. За счет увеличения числа ядер, реальная производительность выросла где-то раза в 2-2,5. В то же время - за последние 5 лет быстродействие дисковых массивов увеличилось, но наверное процентов на 30-40 примерно. Если тенденция сохранится - процессорная мощность будет намного дешевле чем дисковая. Учитывая что генерация плана запроса хорошо паралелиться - правильнее использовать литералы, а не bind-переменные.
|