0

アイテムの情報と説明を保持するmysqlデータベースがあります。

問題は、説明列に最大 150 文字を保持できることです。これは長いと思いますが、クエリ時間が遅くなるかどうか疑問に思いました。また、intのサイズを短くすることをお勧めするかどうかを知りたかったのですが、通常はそれほど大きくない価格がある場合、列を小/中のintに制限する必要がありますか?

列は次のようなものです。

id   name   category   publisher   mail   price   description

前もって感謝します。

4

2 に答える 2

1

文字データを asvarchar()および not as として保存しchar()、これらのデータ型に関する MySQL ドキュメントを参照してください (こちら)。これは、説明に実際に文字を格納するだけでなく、さらに数バイトのオーバーヘッドを加えます。

長いフィールドがパフォーマンスの悪いクエリを意味するかどうかについて。それは複雑な問題です。明らかに、最大サイズのレコードを使用すると、10 バイトのレコードに比べて速度が低下します。その理由は、I/O パフォーマンスに関係しています。MySQL はページを読み取り、ページには 1 つ以上のレコードを含めることができます。次に、ページ上のレコードが処理されます。

ページに収まるレコードが多いほど、I/O は少なくなります。

ただし、ハードウェアとストレージ エンジンによっては、さらに複雑になります。最近のディスクは、オペレーティング システムと同様に先読みを行います。そのため、ページの次の読み取り (ページが断片化されておらず、互いに隣接している場合) は、最初のページの読み取りよりもはるかに高速になる場合があります。実際、最初のページの処理が完了する前に、メモリ内に次のページが存在する場合があります。その時点で、各ページにいくつのレコードがあるかは問題ではありません。

また、レコードの 200 バイトはそれほど大きくありません。最初にアプリケーションを機能させることを心配し、次にパフォーマンス目標を達成することを心配する必要があります。途中で、varchar()代わりにchar()適切なサイズの数値を使用するなど、合理的な選択を行います (通貨値には浮動小数点ではなく固定小数点数値型を検討する場合があります)。

于 2013-04-20T18:18:16.363 に答える