Domanda

Utilizzo di SQL Server Management Studio.

Come faccio a testare le prestazioni di una grande selezione (dire 600k righe) senza la finestra dei risultati impattare mia prova? A parità di condizioni, non ha molta importanza, dal momento che i due query saranno entrambi l'uscita è nello stesso posto. Ma mi piacerebbe per accelerare i miei cicli di test e sto pensando che le impostazioni di uscita di SQL Server Management Studio sono sempre a modo mio. Uscita in testo è quello che sto usando attualmente, ma sto sperando in una migliore alternativa.

Credo che questo sia un impatto miei numeri perché il database è sulla mia macchina locale.

Modifica: aveva una domanda di fare dove 1 = 0 qui (pensando che il join sarebbe accaduto, ma nessuna uscita), ma ho provato e non ha funzionato - non è un valido indicatore di prestazioni delle query.

È stato utile?

Soluzione

Si potrebbe fare SET ROWCOUNT 1 prima della query. Io non sono sicuro che sia esattamente quello che vuoi ma sarà evitare di dover attendere per un sacco di dati da restituire e quindi si darà costi calcolo accurato.

Tuttavia, se si aggiunge Statistiche client alla tua richiesta , uno dei numeri è il tempo delle risposte dei server che vi darà il tempo di calcolo del server non è compreso il tempo necessario per trasferire i dati attraverso la rete Wait.

Altri suggerimenti

È possibile STATISTICHE tempo impostato ON per ottenere una misura di il tempo sul server. Ed è possibile utilizzare il Query / includere statistiche client (Shift + Alt + S) su SQL Server Management Studio per avere informazioni dettagliate circa il tempo di utilizzo del client. Si noti che SQL query non funzionano e quindi restituire il risultato al client al termine, ma invece hanno gestito come Tornano i risultati e anche sospendere l'esecuzione se il canale di comunicazione è piena.

L'unico contesto in cui una query ignora completamente l'invio dei pacchetti di risultato al client è l'attivazione. Ma poi il tempo per tornare l'output al client dovrebbe essere considerato anche quando si misura la vostra performance. Sei sicuro il proprio cliente sarà più veloce di qualsiasi SSMS?

SET ROWCOUNT 1 interrompe l'elaborazione dopo la prima riga viene restituita che significa meno che il piano dovesse contenere un operatore di blocco i risultati saranno inutili.

Prendendo un esempio banale

SELECT * FROM TableX

Il costo di questa ricerca in pratica sarà fortemente dipenderà dal numero di righe in TableX.

Utilizzando SET ROWCOUNT 1 non mostrerà nulla di tutto ciò. Indipendentemente dal fatto TableX ha 1 riga o 1 miliardo di righe sosterà esecuzione dopo la prima riga viene restituita.

Spesso mi assegno i risultati SELECT alle variabili per essere in grado di guardare le cose come logico legge senza essere rallentato da SSMS la visualizzazione dei risultati.

  SET STATISTICS IO ON
  DECLARE @name nvarchar(35),
          @type nchar(3)

  SELECT @name = name, 
         @type = type
  FROM master..spt_values

C'è un relativo collegamento richiesta Articolo Fornire "Scarta risultati opzione sul server" in SSMS e / o TSQL

Come si può testare le prestazioni della vostra query se non lo fai in uscita i risultati? Accelerare il test è inutile se il test non dice nulla su come la query sta per eseguire. Vuoi davvero scoprire questo cane di una query richiede dieci minuti per restituire i dati dopo aver premuto a spingere?

E, naturalmente, la sua intenzione di prendere un po 'di tempo per tornare 600.000 record. Sarà a vostra interfaccia utente così, ci vorrà probabilmente più di nella finestra di query, perché le informazioni deve passare attraverso la rete.

La cosa migliore che puoi fare è quello di verificare il piano di esecuzione di query (premere Ctrl + L ) per la query vera e propria. Che vi darà il meglio guesstimate per le prestazioni disponibili.

mi piacerebbe pensare che la clausola WHERE di WHERE 1=0 è decisamente accadendo sul lato SQL Server, e non Management Studio. Non ci sono risultati sarebbero stati restituiti.

è il motore DB sulla stessa macchina che si sta eseguendo il Mgmt Studio su?

Si potrebbe:

  • Output al testo o
  • Output su file.
  • Chiudere il riquadro Risultati query.

Che sarebbe solo spostare i cicli spesi per disegnare la griglia Mgmt Studio. Forse i Resuls in testo sarebbe più performante nel suo complesso. Nascondendo il riquadro avrebbe salvato i cicli su Mgmt Studio sul dover disegnare i dati. E 'ancora in fase restituito al Mgmt Studio, quindi in realtà non sta risparmiando un sacco di cicli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top