2016-01-15 16 views
5

Sto usando MySQL come database per un'applicazione Laravel. Si consideri una struttura di tabella di seguenti-Separato da tubi vs righe separate

id brand_id numbers

Considerando per contro ogni brand_id ci sono circa 5k numeri. Sono incerto tra i seguenti approcci

  1. Conservare tutti i numeri 5k in un unico tubo disco separato
  2. negozio di ciascuno dei numeri 5k come un record separato

Clueless quale impostazione provocherà una prestazione migliore

+3

Raccomando una lettura rapida del capitolo 2 dell'eccellente libro di Bill Karwin [SQL Antipatterns] (http://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557). (Puoi leggere il capitolo 2 nell'anteprima di "Guarda dentro" di Amazon). In conclusione: la memorizzazione di un elenco delimitato di valori in una singola colonna è una cattiva idea. Finché vengono creati gli indici appropriati, la memorizzazione dei singoli valori in righe separate non è un problema di prestazioni. – spencer7593

+0

Questo è stato utile! –

+3

Un punto in più. Se mai si memorizza un elenco delimitato in un campo (quasi mai una buona idea), quindi utilizzare una virgola come delimitata. Anche se le prestazioni saranno ancora scarse (a causa dell'impossibilità di indicizzarla utilmente) è possibile utilizzare almeno la funzione FIND_IN_SET() – Kickstart

risposta

5

Senza sapere nulla di Laravel, ma qualcosa sui database la mia risposta generale sarebbe che non si dovrebbe quasi mai archiviare più di un elemento in un singolo record in un database relazionale - così facendo si rompe il relational model e rende i dati molto difficili da utilizzare, quindi il secondo approccio è decisamente migliore. Forse dovresti leggere su come funzionano i database relazionali e su database normalization.

Se si lascia un record in possesso di più di un elemento discreto, non è possibile né mantenere le relazioni tra le tabelle né utilizzare l'indicizzazione per aumentare le prestazioni e si perdono anche molte altre proprietà importanti.

Problemi correlati