Memorizza il risultato di una query di database complessa ma frequente, in un'altra tabella di persistenza temporanea

1

Ho una query SELECT leggermente complessa che utilizza un numero di JOIN e variabili al suo interno e la query viene eseguita frequentemente in tutta l'applicazione.

Il risultato varia quando una colonna viene aggiornata. Ad es .: quando la quantità di prodotto viene aggiornata solo, la serie di risultati cambia.

Quindi la mia domanda è, è una buona idea eseguire un trigger e aggiornare una tabella temporanea nel database, con i risultati della query SELECT, ogni volta che viene aggiornata la quantità del prodotto? O per eseguire la query SELECT complessa ogni volta?

In questo momento ho testato con ~ 10 righe di dati e il tempo di esecuzione della query è 0.001 secondi. Voglio utilizzare il miglior metodo possibile che non ostacoli le prestazioni con la crescita del database.

Grazie!

    
posta blackpla9ue 19.02.2014 - 05:07
fonte

2 risposte

2

In generale, una domanda sull'ottimizzazione dovrebbe sempre essere preceduta da un esempio del perché ne hai bisogno. Se puoi interrogare un database e ottenere il risultato che ti occorre in 0,001 secondi, non hai nulla di cui preoccuparti: un database restituirà volentieri tutte le informazioni di cui hai bisogno.

Ricorda, solo perché pensi che la query sia complessa non significa che il motore di database la pensi così. Un buon motore di database è costruito per interrogare grandi quantità di dati rapidamente. Troverà un modo per far funzionare la tua query nel modo più efficiente possibile.

Ora, se torni indietro e dici che non puoi generare le informazioni necessarie in meno di 30 secondi o che il numero di transazioni travolge il tuo server, potresti avere un caso per scaricare i dati in una tabella temporanea. Tuttavia, è necessario fare attenzione: non è facile come estrarre i dati da un tavolo, è necessario assicurarsi che gli utenti ottengano solo un risultato, anziché parti di due, mentre si ri-genera la tabella. Ma il mio consiglio è che non ne avrai bisogno finché non ne avrai bisogno.

    
risposta data 19.02.2014 - 05:18
fonte
0

Poiché questo è taggato MySQL ... MySQL ha già incorporato il supporto per query caching . Quindi non dovrebbe esservi la necessità di eseguire il rollover a meno che non si abbiano delle sfide specifiche e univoche da aggirare. Devi solo assicurarti che il caching delle query sia abilitato nella tua installazione MySQL. Non mi sorprenderebbe se la maggior parte degli altri DBMS avessero funzionalità simili.

Quindi, in generale, no, non ci dovrebbe essere bisogno di questo per le query stesse.

Se sei preoccupato per le prestazioni della query, scopri come utilizzare EXPLAIN e interpreta i risultati per aiutarti a creare indici. È qui che otterrai il miglior "bang for the buck" in termini di ottimizzazione delle prestazioni.

    
risposta data 19.02.2014 - 05:24
fonte

Leggi altre domande sui tag