1

私は MySQL を使用してCHARおり、インデックス付きの列での使用は use よりも 20% 高速であることをいくつかの場所で読んでいますVARCHARVARCHAR他の場所では、その利点はテーブルに列がない場合にのみあるようです。本当?

保存したい情報は GUID です。データベースが文字セット utf8 を使用している場合、データを aBINARYまたはa に保存するより良いオプションはありますか? 挿入、更新、または GUID によるクエリ フィルタリングが必要になるたびCHARに、データを変換する価値はありますか? BINARY保存ディスクの使用量よりも高速なデータ アクセスを好みます。

4

1 に答える 1

5

固定幅の列タイプは、可変幅のタイプと比較して、シーク操作が高速になります。テーブルがパーティション化されていない限り、可変幅型が関与しない操作でもパフォーマンスが低下する可能性があることも事実です。検討のために、すべての列が固定幅で、一部が固定幅でない場合に、列内のすべての値を反復する方法についてアルゴリズムを考えてみてください。

すべてが固定幅のテーブル (またはパーティション) の場合は、単純なポインター演算を使用できます。この場合、ループのたびに、パーティション内のすべての列の結合されたデータ幅の値を追加します。

ただし、可変幅の列がある場合は、列の実際のディスク上の「幅」に基づいて、反復ごとにポインターに追加する量を計算する必要があります。

于 2012-08-28T21:04:11.127 に答える