-1

私はphpとMysqlデータベースを使用しています。データベースからデータを選択するためのより高速な方法はどれですか

  1. 商品テーブルの各行に カテゴリID /*名前*を入力し、select * from product table WHERE category name = something

また

  1. 関係テーブルを作成し、最初にこのテーブルを検索してから、製品テーブルから一致した結果を選択します

IDやNAMEはどうですか?ID を検索してから、それらを NAME に変換する必要がありますか?

  1. PHPを使用してカテゴリIDをカテゴリ名に変換する
  2. カテゴリ名テーブルを使用して ID をカテゴリ名に変換する
  3. 製品テーブルの製品の行からカテゴリ名を取得します
4

4 に答える 4

3

明らかなパフォーマンス上の理由がない限り、正規化されたデータベース設計に固執する必要があります。特定のケースでは、カテゴリ名を繰り返すとパフォーマンスが低下する可能性があります。これは、テーブルが大きくなり、4 または 8 バイトの整数ではなく文字列を比較する必要があるためです。

于 2014-01-13T19:25:37.123 に答える
0

理想的には、カテゴリのテーブルを作成し、そのテーブルの主キー (id フィールド) を製品テーブルの category_id に使用します。その後でも、category_id フィールドで検索を行うことができますが、正規化に近くなり、テキスト フィールドにインデックスを作成するよりも、その整数フィールドにインデックスを作成する方がパフォーマンスが向上します。

于 2014-01-13T19:27:38.117 に答える
0

名前を一覧表示する別のカテゴリ テーブルを用意する方が高速です。カテゴリ テーブルの同じカテゴリ ID に対応する製品テーブルにカテゴリ ID を配置します。「このテーブルで検索」する必要はありません。結合を使用するだけです:

SELECT product_table.*, category_table.CategoryName 
FROM product_table
INNER JOIN category_table ON category_table.CategoryID = product_table.CategoryID
WHERE CategoryName = ?

CategoryName の代わりに CategoryID で選択できる場合は、CategoryID が主キーになるため、高速になります。

于 2014-01-13T19:28:00.967 に答える