Per quanto strano possa sembrare, ho bisogno di rallentare una query SQL. Attualmente sto utilizzando Microsoft SQL Server 2008 R2 su un server di sviluppo interno con il database AdventureWorks. Sono in procinto di testare del codice e le query che sto eseguendo sono troppo veloci, non importa quello che cerco!Come rallentare una query SQL?
Fondamentalmente sto testando una funzione di cut-off e ho bisogno di una query sufficientemente lunga per poterla tagliare prima che venga completata.
Sfortunatamente, poiché è un'installazione locale, non c'è una singola query o una tabella abbastanza grande nel database AdventureWorks per darmi effettivamente dati validi con cui lavorare. Ho provato
WAITFOR DELAY '01:00'
che ha lavorato molto per testare solo per assicurarsi che stava lavorando, ma ora ho bisogno di testare per vedere se riesco a tagliare i dati di flusso off metà lettura. La dichiarazione WAITFOR non mi rende giustizia a tale riguardo perché ho bisogno di recuperare i dati dal server attivamente. La mia prima intuizione è stata quella di utilizzare calcoli convoluti per rallentarlo, tuttavia anche se il server SQL moltiplicava tutti i valori numerici nella query, 37 volte solo rallentavano la query di millisecondi. La seconda cosa che ho provato è stata incorporare l'istruzione WAITFOR
in una sottoquery ma sembra che tu non possa farlo. Infine, l'unica cosa che non ho provato è l'esecuzione di più stored procedure e WAITFOR
tra loro, ma non penso che funzionerebbe per quello che mi serve.
Devo dire, sono impressionato da quanto sia difficile fare una query assolutamente terribile quando sei così vicino al server.
C'è un modo per rallentare facilmente una query?
Grazie!
Basta effettuare una query * davvero scadente * off-index o forzare una query normalmente valida per utilizzare LOOP JOINs quando dovrebbe utilizzare HASH/MERGE ;-) –
Alcuni join self-cross rallenteranno le cose bene ... E un ampio set di risultati potrebbe causare il collo di bottiglia di IO. – Oded