Quindi sto passando (ancora) alcune viste sql legacy lente utilizzate per calcolare medie e deviazioni standard su un (talvolta) grande insieme di dati. Quello che finisco sono le viste che uniscono le viste che uniscono le viste ecc.Query SQL, piani di esecuzione e "parallelismo"
Quindi, per quanto mi piacerebbe esaminare il piano di esecuzione per la mia richiesta. E ha immediatamente suggerito un indice mancante, che ho poi implementato. Ma è ancora insopportabilmente lento (così lento che scade l'app VB6 che lo richiede per i dati;))
Quindi, dopo aver studiato ulteriormente il piano di esecuzione, vedo che i costi maggiori (circa l'8% ciascuno nel mio caso) sono Casi "Paralellismo". Per lo più "Distribuisci stream" e "Ripartizione stream". Cosa sono questi?
Ho lavorato su un sistema simile alcuni anni fa con Views che si aggiungeva a Views e dove le prestazioni alla fine diventavano inaccettabili con la crescita della quantità di dati nel sistema. Ho scoperto che riscrivendo le query da zero per accedere alle tabelle di base invece che le Viste davano un miglioramento di ordini di grandezza nel costo delle query. Probabilmente scoprirai se dai piani si accede ripetutamente alle stesse tabelle di base per fare diverse aggregazioni. [Esempio di inefficienza che può sorgere] (http://stackoverflow.com/questions/3222542/is-querying-on-views-slower-than-doing-one-query/3222905#3222905) –