Мигрировано с 2012 по 2017 год один месяц назад (тестирование проходит нормально, но тестирование не является строгим). Через месяц я заметил, что функции табличных значений, начинающиеся с последовательности табличных выражений Commmon, выполняются очень долго или не выполняются вообще. Я в порядке с переписыванием кода (стороннее приложение вместе с нашим собственным кодом рядом ... ой). Сегодня я заметил, что запрос отлично работает на сервере SQL2012 (я до сих пор имею к нему доступ) и полностью переходит на ланч на SQL2017. Я думал, что это может произойти, и сохранил настройки совместимости для всех БД. Кто-нибудь сталкивался с этим?
Я играл с 9481, но, как я понимаю, с Comp Level 110, это даже не должно быть проблемой. Есть ли какие-либо другие настройки сервера, которые я могу установить, чтобы заставить его вести себя так, как он решает проблемы (их много), один за другим.
Кроме того, поскольку эти таблицы tvf используются повторно и используются везде, важно, чтобы они оставались как таковые. Я не могу переставить мебель слишком много. Разработчики использовали как TVF, так и CTE.
Мигрировано с 2012 по 2017 год месяц назад, совместимость не изменилась. Разработан шаблон, в результате которого запросы:
Select t1.Col1
t1.Col2,t2.Col8,
tvfTable1.Col10, etc...
FROM table1 t1 join table2 t2 on t1.key=t2.foreignkey
CROSS APPLY (t1.Col1,t2,col4,0,1,2,3) tvfTable1
Кажется, что все TVF начинаются с:
...
AS RETURN (
WITH CTE1 AS (query),
CTE2 AS (query referencing CTE1)
...
SELECT MANYColumns
FROM MANYTABLES JOIN CTE4 on mt.key=cte4.key