Cerca oggetti in loop o query? Chi ha prestazioni migliori?

0

Ho un DB che memorizza alcuni oggetti complessi della mia app. All'avvio della mia app, carico gli oggetti in elenco e li memorizzo nella RAM. Ma a volte mi piacerebbe cercare un oggetto che soddisfi le condizioni (filtraggio), anche le condizioni sono complesse.

Ho sempre scritto un ciclo for (a volte molto complesso) per questa cosa, che gira su questi oggetti. Ma di recente ho sentito che le query DB e SQL hanno molti meccanismi di ottimizzazione (dipendenti dalla società DB) e funzionano più velocemente della ricerca regolare. Se ho capito bene, è meglio scrivere una query SQL che cerchi questi oggetti e restituisca gli ID degli oggetti. E poi con loro ID, prendi gli oggetti rilevanti.

Sembra essere la soluzione definitiva per la ricerca di oggetti.

Ma sono un po 'dubbioso su questa idea, perché tutto il tempo abbiamo imparato che DB è lento, ed è meglio caricare gli oggetti nella RAM e lavorarci sopra ...

Quindi ho due domande:
1) Le query sono in realtà più veloci della ricerca regolare (per ricerche complesse)?
2) Forse è vero per molti molti oggetti (migliaia), ma è vero per pochi oggetti (decine)?

    
posta nrofis 01.12.2013 - 20:13
fonte

1 risposta

1

In generale, la ricerca nel database sarà sempre più veloce, specialmente se stai cercando su elementi indicizzati. Detto questo, comunicare con il database è più lento.

Quanto veloce / lento dipende da molte variabili specifiche della tua situazione. Misura, quindi ottimizza. In generale, se hai pochi oggetti o hai bisogno di fare molte ricerche semplici, guarda alla RAM. Se la latenza è un problema, cerca nella RAM o in un database non tradizionale. Altrimenti, i database sono specializzati per l'interrogazione e spesso saranno assurdamente più veloci delle ricerche ingenue.

    
risposta data 01.12.2013 - 20:57
fonte

Leggi altre domande sui tag