2012-02-14 3 views
6

Cercando di comprendere meglio i database in generale, e sqlite3 in particolare:sqlite3 influiscono sulle prestazioni?

Le viste in sqlite3 sono principalmente una funzionalità organizzativa che consente di suddividere query complesse in una serie di più piccole; o le visualizzazioni influenzano effettivamente le prestazioni delle query che le usano?

Ho notato che le viste sono memorizzate nel database stesso come parte dello schema. Le viste sono memorizzate su disco, aggiornate dinamicamente mentre le tabelle dipendenti vengono aggiornate; o sono valutati su richiesta?

Grazie.

+0

Rosso da un post sul blog: "Cerca di evitare l'uso di viste per i dati a cui stai costantemente accedendo. Se puoi permetterti, crea tabelle temporanee e inserisci i dati lì. Questo eliminerà il sovraccarico imposto dalla valutazione della vista. « Puoi trovarlo qui: http://katastrophos.net/andre/blog/2007/01/04/sqlite-performance-tuning-and-optimization-on-embedded-systems/ Non ho idea se questo sia vero. – Joelmob

risposta

9

Le viste verranno sempre eseguite su richiesta (sqlite3 o altro), pertanto i risultati restituiti non vengono mai archiviati in modo persistente.

Per quanto riguarda le prestazioni, mentre non riesco a parlare specificamente di sqlite3, in genere l'utilizzo delle viste avrà un sovraccarico leggermente inferiore poiché l'analizzatore/pianificatore di query non deve eseguire nuovamente il raw sql su ciascuna esecuzione. Può analizzarlo una volta, archiviare la sua strategia di esecuzione e quindi utilizzarlo ogni volta che la query viene effettivamente eseguita.

L'aumento delle prestazioni che vedete con questo sarà generalmente piccolo, nel grande schema delle cose. Aiuta davvero solo se è una query veloce che stai eseguendo frequentemente. Se si tratta di una query lenta eseguita di rado, l'overhead associato all'analisi della query è insignificante. Le opinioni, naturalmente, forniscono un livello di organizzazione che è bello.