Dopo aver cercato per un po ', ho deciso di pubblicare questa domanda per mancanza di trovare una risposta e scusarmi se c'è una domanda / risposta simile là fuori.
Quando eseguiamo la query di seguito su due server SQL configurati in modo simile, incontriamo diversi piani di esecuzione che influiscono sulle prestazioni e abbiamo bisogno di aiuto per capire la causa.
La domanda:
SELECT process_id
INTO #temp
FROM revrep_revenue_fact
WHERE process_id = 284
DROP TABLE #temp
Piano di esecuzione del server A
Piano di esecuzione del server B Server B http://s2.postimg.org/z9fjrfv4n/server_B.png
Noterai che il server B ha l'operazione fisica TOP nel piano di esecuzione effettivo e stiamo cercando di capire perché. Entrambe le query utilizzano lo stesso indice nella ricerca indice.
Ecco alcuni dettagli del server A e del server B.
Server A e B sono entrambi
Windows Server 2008 R2 Standard Service Pack 1
24 GB di RAM
Sistema operativo a 64 bit
Versioni di SQL Server 2012 ottenute utilizzando ( SELEZIONA SERVERPROPERTY ('ProductVersion') )
Server Una versione SQL 11.0.3000.0
Server B SQL versione 11.0.5058.0
Cosa abbiamo provato
- Svuotare la cache delle procedure
- Ricostruzione degli indici
- Statistiche di aggiornamento
- SET ROWCOUNT 0
Perché il server B ha il TOP nel piano di esecuzione? In questo semplice esempio di query non ci sono problemi reali, ma in una query più ampia il costo aumenta per il TOP e vediamo un successo nelle prestazioni. Qualsiasi aiuto per il debug di questo sarebbe molto apprezzato e possiamo fornirti tutte le informazioni aggiuntive di cui potresti aver bisogno per aiutarti.
GO
dopo la riga del conteggio delle righe. Puoi pubblicare anche le proprietà dell'operatore Top?
TOP
operatore suggerisce che un diverso da zeroSET ROWCOUNT
era stato precedentemente eseguito su quella connessione. Riprovare con dopo l'esecuzioneSET ROWCOUNT 0;
. Inoltre, le versioni SQL che hai pubblicato non sono SQL 2008 R2. EseguireSELECT SERVERPROPERTY('ProductVersion');
sui 2 server per ottenere la versione effettiva di SQL Server.