2016-01-15 22 views
5

我使用MySQL作爲數據庫的Laravel應用。考慮以下各項的管分離VS獨立的行

id brand_id numbers

表結構考慮針對每個brand_id大約有5K的數字。我不確定之間的下列方法

  1. 存儲所有5K號在一個記錄管分離
  2. 每個5K數字作爲一個單獨的記錄

無能,其做法將導致商店更好的性能

+3

我建議快速閱讀Bill Karwin的優秀書籍[SQL反模式]的第2章(http://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557)。 (您可以閱讀亞馬遜「Look Inside」預覽中的第2章)。底線:將分隔的值列表存儲在單個列中是一個不好的主意。只要創建了適當的索引,將各個值存儲在不同的行中就不是性能問題。 – spencer7593

+0

這很有幫助! –

+3

一個額外的點。如果你曾經在字段中存儲分隔列表(幾乎從來不是一個好主意),那麼使用逗號作爲分隔符。雖然性能仍然會很差(由於有效索引它是不可能的),你至少可以使用FIND_IN_SET()函數 – Kickstart

回答

5

無需瞭解Laravel什麼事,但關於數據庫我一般的回答是,你應該幾乎從來沒有在一個記錄存儲在關係數據庫中一個以上的項目 - 這樣做打破了relational model並且使得數據非常難以使用,所以第二種方法明確地更好。也許你應該閱讀關於關係數據庫的功能和關於database normalization

如果你讓一個記錄持有多單獨立項目,你可以不保存表,也不使用索引之間的關係,以提高性能,而你失去了很多其他重要的特性了。