Дещо шукаючи, я вирішив поставити це питання через відсутність пошуку відповіді та вибачтесь, якщо є подібне питання / відповідь там.
Під час запуску запиту нижче на двох аналогічно налаштованих SQL-серверах ми стикаємося з різними планами виконання, що впливає на продуктивність, і нам потрібна допомога в з'ясуванні причини.
Запит:
SELECT process_id
INTO #temp
FROM revrep_revenue_fact
WHERE process_id = 284
DROP TABLE #temp
План виконання сервера A
План виконання сервера B Server B http://s2.postimg.org/z9fjrfv4n/server_B.png
Ви помітите, що сервер B має ТОП-фізичну роботу у фактичному плані виконання, і ми намагаємось з’ясувати, чому. Обидва запити використовують один і той же індекс у пошуковій індексі.
Ось деякі деталі сервера A та сервера B
Сервери A і B - це обидва
Стандартний пакет оновлень 1 для Windows Server 2008 R2
24 Гб оперативної пам’яті
64-розрядна операційна система
Версії SQL Server 2012, отримані за допомогою ( SELECT SERVERPROPERTY ("ProductVersion") )
Сервер SQL версії 11.0.3000.0
Сервер B версії SQL 11.0.5058.0
Що ми спробували
Чому сервер B має ТОП у плані виконання? У цьому простому прикладі запиту немає справжніх проблем, але в більшому запиті вартість підвищується для ТОП, і ми бачимо хіт на ефективність. Будь-яка допомога з налагодження цього буде дуже вдячна, і ми можемо отримати будь-яку додаткову інформацію, яка вам може знадобитися, щоб допомогти.
GOпісля рядка рядків. Чи можете ви також розміщувати властивості Top оператора?

TOPОператор передбачає ненульоваSET ROWCOUNTраніше був виконаний на зв'язку з цим. Повторіть спробу після виконанняSET ROWCOUNT 0;. Крім того, опубліковані вами версії SQL не є SQL 2008 R2. ЗапустітьSELECT SERVERPROPERTY('ProductVersion');на двох серверах, щоб отримати фактичну версію SQL Server.