2016-01-15 9 views
5

私はLaravelアプリケーションのデータベースとしてMySQLを使用しています。すべての反対のために考慮following-パイプで区切られた行と別の行

id brand_id numbers

のテーブル構造を考えてみましょう周り5kの数字があるbrand_id。以下は、単一のレコードパイプに

  1. ストアすべての5kの数値に近づく間、私はわからないよ分離
  2. ストアたアプローチになりますするよう

クルーレス別々のレコードとして5K番号のそれぞれをより良いパフォーマンス

+3

Bill Karwinの優れた本[SQL Antipatterns](http://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557)の第2章を簡単に読むことをお勧めします。 (Amazonの「Look Inside」プレビューで第2章を読むことができます)。結論:区切られた値のリストを単一の列に格納することは悪い考えです。適切なインデックスが作成されている限り、個々の値を別々の行に格納することはパフォーマンスの問題ではありません。 – spencer7593

+0

これは役に立ちました! –

+3

追加ポイントが1つ。区切られたリストをフィールドに格納する(ほとんど決して良い考えではない)場合は、コンマを区切りとして使用します。パフォーマンスは依然として劣っていますが(インデックスを付けることができないため)、少なくともFIND_IN_SET()関数を使用することができます – Kickstart

答えて

5

Laravelについて何も知らずに、データベースについて私の一般的な答えは、リレーショナルデータベースの1つのレコードに2つ以上のアイテムを保存することはほとんどありません。 relational modelを使用してデータを処理するのが非常に難しくなります。したがって、2番目のアプローチは確実に優れています。たぶん、リレーショナルデータベースの機能と、database normalizationについて読むべきでしょう。

レコードに複数の個別アイテムを保持させる場合、テーブル間の関係を維持することも、インデックスを使用してパフォーマンスを上げることもできず、他の重要なプロパティも多く失われます。

関連する問題