Diciamo che voglio memorizzare i brani nel mio database. Invece di avere solo una tabella Song
, ho dieci tabelle. La tabella Song
ha anche una chiave esterna per la tabella Artist
. Quando un artista viene aggiunto al database, controlliamo esattamente quanti brani ci sono in ciascuna delle tabelle Song
, e assegniamo la tabella con il minor numero di canzoni dell'artista. Tutte le canzoni dell'artista verranno memorizzate in quella tabella Song
.
Non voglio memorizzare oggetti 1M in una tabella, ma piuttosto dividerli in dieci pezzi, ciascuno di circa 100k oggetti, e archiviarli in dieci tabelle diverse, ma strutturalmente simili. Ora, a condizione che il riferimento alla tabella delle canzoni negli oggetti dell'artista non venga mai modificato, il mio sistema generale sarà più veloce e avrà prestazioni migliori?
Capisco che un grosso problema potrebbe essere trovare singole canzoni, ma per favore rispondi a questa domanda nel contesto in cui le canzoni possono essere recuperate dal database solo fornendo 2 parametri:
- artist_id
- song_id
Se ho artist_id, posso usarlo per ottenere il mio oggetto artista, che contiene un riferimento alla tabella delle canzoni che contiene la canzone con la canzone con il brano_data. Quindi non devo interrogare dieci diverse tabelle per trovare una canzone, se ho l'artist_id, che sarà sempre il caso.
Sarà completamente inutile? O avrà un impatto positivo sulle prestazioni del mio sistema?
Nota: mi rendo conto che le canzoni non dovrebbero mai essere archiviate in questo modo, dal momento che si vorrebbe interrogare le canzoni senza conoscere l'artista, ma questo è solo per un esempio, anche se povero. Inoltre, si prega di ignorare il fatto che questi sarebbero un disastro da codificare e gestire al momento della risposta. Voglio solo sapere dell'impatto sulle prestazioni.