Questo è iniziato come this question ma ora sembra più opportunamente richiesto in quanto ho capito che si tratta di una questione correlata a DTU.Il conteggio di selezione semplice (id) utilizza il 100% delle DTU SQL di Azure
In sostanza, in esecuzione:
select count(id) from mytable
EDIT: Aggiunta di una clausola WHERE non sembra aiutare.
sta prendendo tra l'8 e il 30 minuti per eseguire (mentre la stessa query su una copia locale di SQL Server richiede circa 4 secondi ).
Di seguito è riportata una schermata della scheda MONITOR nel portale di Azure quando si esegue questa query. Nota L'ho fatto dopo aver toccato il Database per circa una settimana e il reporting di Azure che avevo usato solo l'1% dei miei DTU.
Un paio di cose in più:
- In questo particolare test, la query ha preso 08: 27s a correre.
- Mentre era in esecuzione, il grafico sopra mostrava effettivamente la linea DTU al 100% per un periodo.
- Il database è configurato livello di servizio standard con livello di prestazioni S1.
- Il database è di circa 3,3 GB e questa è la tabella più grande (il conto restituisce circa 2.000.000).
mi rendo conto che potrebbe essere solo la mia comprensione limitata, ma se qualcuno potesse chiarire se questo è davvero il comportamento previsto (vale a dire un conteggio semplice così tanto tempo per correre e maxing la mia DTU) che sarebbe molto apprezzato.
Le risposte nella domanda originale coprono già ciò che accade. Il conteggio "semplice" è in realtà artificioso, costoso e deve eseguire la scansione dell'intero tavolo. * Non farlo *. Se si disponesse di una clausola WHERE che utilizzava i campi indicizzati, l'ottimizzatore userebbe un'operazione di ricerca dell'indice con prestazioni decisamente migliori. Una ricerca legge l'indice B-Tree per trovare le righe corrispondenti prima di calcolare il totale (cioè molto meno IO, migliore velocità). Se utilizzi un campo con un'elevata selettività, dovrai leggere molto meno pagine indice. –
Solo FTR, il conteggio "semplice" non è ideato - è ciò che devo fare con/senza clausole diverse. – chrisb
Hai mai avuto una risposta soddisfacente perché questo sta accadendo? Vedo la stessa cosa con S2 (50 DTU) su un database da 127 GB con una tabella singola di 550 milioni di righe e il conteggio (1) richiede quasi un'ora. –