У меня есть запрос, который использовал табличную функцию с несколькими утверждениями в предложении WHERE, как таковое:
WHERE value IN (SELECT * FROM dbo.Split('SO',','))
Возвращаемым значением функции является таблица с одной ячейкой, 'SO'
Я обнаружил, что запрос выполняется намного быстрее без функции:
WHERE value = 'SO'
WHERE value IN ('SO')
WHERE value IN (SELECT 'SO')
В конце концов я удалил и создал функцию, не меняя код, и запрос выполнялся намного быстрее. Раньше это не завершалось за минуту, а теперь это занимает секунду.
Что могло измениться, когда я сбросил и заново создал функцию?