0

2 つのフィールドを含む製品のテーブルがあります。

1) 製品の ID int-7 桁

2)商品名

商品の名前には、バナナ、リンゴなど 27 種類の値のみを使用できます。

今、私のWebサーバーリソースにとって最良のアプローチは何だろうと思っています。つまり、1、2、3、... の値または文字列値を使用する必要がありますか?

〜私のテーブルは約100万行になり、時間の経過とともに着実に増加します。

4

2 に答える 2

1

VARCHAR を使用します。

または、製品が静的なままであることが絶対に確実な場合は、ENUMを使用してスペースを節約できますが、27 行だけで節約するスペースはあまりありません。

ただし、他のテーブルから製品を参照する必要がある場合は、代理キー(自動インクリメント整数) を作成して、参照テーブルのスペースを節約することを検討してください (VARCHAR 製品名または 7 桁の製品 ID を繰り返す場合と比較して)。

注: 「スペースを節約する」とは、ストレージ スペースだけではありません。データが小さいほど、I/O が少なくなり、指定された量の RAM でより効果的にキャッシュできることを意味します。これは小さなテーブルでは重要ではありませんが、大きなテーブルでは違いが生じる可能性があります (たとえば、製品を参照する大きな「注文アイテム」テーブルがある場合)。

于 2013-04-22T09:53:40.493 に答える
1

VARCHAR読みやすくするために、名前フィールドに使用する必要があります。9 か月後にこれに戻って、1 がリンゴなのかバナナなのかを思い出さなければならない場合、非常に苦労することになります。

製品名を印刷する必要があると思いますが、基本的には、PHP または MySQL のどちらで文字列を選択するかを選択しています。またはSELECT * FROM fruit WHERE product_name = 'Banana'SELECT * FROM fruit where product = 7その後foreach($fruits as $fruit): if $fruit['id'] = $row['product'] { return $fruit['name']; } endforeach;

同様に、PHP 配列からの値の割り当ては、フィールドarray(1 => 'apple', 2 => 'banana' ... 27 => 'eggplant');に対する MySQLSELECTステートメントよりも多くのオーバーヘッドを使用します。VARCHARデータベース側で得たパフォーマンスは、アプリケーション側では 5 分の 1 に失われます。

于 2013-04-22T09:50:40.040 に答える