SQL viste indicizzate: cosa succede se i dati è cambiato
Domanda
I undestand cosa vista indicizzata sono ma mi chiedo che cosa succede esattamente quando i dati nella tabella di underlaying (s) è stata modificata? È intera cache vista scartata od appena cambiato le righe?
Ho domanda molto complessa su più tavoli (+5) che viene utilizzato per la ricerca di hotel di disponibilità (+ 100k record) e IMHO vista indicizzata poteva migliora le prestazioni in modo significativo. Ma i dati (poche righe) vengono cambiati di frequente (camera è stata venduta, camere libere alterati in admin atc.) E se la vista sarebbe ricostruire ogni momento in cui una sola riga è stata modificata, sarebbe collo di bottiglia per la mia app.
O tutte le idee come "cache" query molto coplex?
Grazie.
Soluzione
Dalla documentazione TechNet:
A differenza di indici comuni, una singola riga inserire in uno qualsiasi dei partecipanti tabelle possono causare più riga cambia in una vista indicizzata. Questo è perché singola fila possono aderire con più righe di un'altra tabella. Lo stesso è vero per gli aggiornamenti ed eliminazioni. Di conseguenza, il mantenimento di un vista indicizzata può essere più costoso che mantenere un indice sulla tavolo.
Fonte:
http://technet.microsoft.com/en-us /library/cc917715.aspx#XSLTsection124121120120
vale a dire. sembra come se righe vengono aggiornati se del caso, senza necessariamente dover aggiornare / ricreare la vista nella sua interezza.
Altri suggerimenti
Io parto dal presupposto si esegue server SQL. 100k + righe non è un sacco. Se si stanno unendo 5ish tabelle vorrei suggerire che hai fatto che non ci sono che coprono gli indici sulle colonne si stanno unendo prima di considerare l'attuazione viste indicizzate. Utilizzare l'analizzatore di query per trovare il collo della bottiglia nella query direttamente. Se si hanno problemi di prestazioni in modo da tavolini ci sono le scansioni di tabella probabilmente brutto là dentro.