Дещо шукаючи, я вирішив поставити це питання через відсутність пошуку відповіді та вибачтесь, якщо є подібне питання / відповідь там.
Під час запуску запиту нижче на двох аналогічно налаштованих 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.