Я разработал функцию, которая работает с отчетом SSRS.У меня есть выпадающий параметр, который перечисляет несколько элементов, и только один может быть выбран.Этот выпадающий список получает свои данные из набора запросов / данных, и я добавил в него одну строку данных с надписью «Все».Таким образом, раскрывающийся список будет выглядеть следующим образом:
- Item1
- Item2
- Item3
- Все
И затемв этой функции я вносил одно небольшое изменение в предложение where:
...where (@parameterName = 'All' or table.name = @parameterName)
Проблема в том, что table.name имеет около 50000 строк данных.Когда пользователь выбирает «Все» в раскрывающемся списке, я бы подумал, что, поскольку первый оператор в скобках является истинным, и что следующий оператор (после «или») даже не должен выполняться.Но это заставляет запрос выполняться в течение 5-20 минут и все равно не дает никакого результата после этого времени.Если я просто изменю предложение where на
...where (@parameterName = 'All')
Функция выполняется менее чем за секунду, если пользователь все еще выбирает «Все» из выпадающего списка.
Я реализую аналогичную концепциюс другим фильтром, но я думаю, потому что таблица, которую использует этот параметр, намного меньше (около 90 строк), поэтому это не займет много времени.
Есть ли в принципе способ иметь необязательный параметр, который не дорогойдля расчета?
РЕДАКТИРОВАТЬ: Я добавлю, что параметр объявлен как nvarchar(max)
.Поможет ли это изменить запрос на что-то меньшее?