1

私のアプリには、utf8 を必要とする 2 つの列があり、他はラテン語のテーブルがあります。ラテン文字には定義上非ラテン文字は含まれず、utf8 文字には utf8 文字が含まれる場合と含まれない場合があります。1 つの utf8 列は索引付けされ、他の列は索引付けされていません。

3 つの質問があります。

列レベルで文字セットを混在させることは良い習慣ですか?

行 (このテーブル) にラテン文字のみが含まれ、utf8 文字が含まれていない場合、データ ストレージとインデックス サイズはどのように影響を受けますか? 別の言い方をすれば、utf8 テキストを保存せずにラテン語と同じ utf8 列データ/インデックス サイズです。

ラテン語に関して、utf8 列のデータとインデックス ストレージは量的にどのように影響を受けますか?

ありがとう

4

1 に答える 1

0

UTF-8は可変長エンコーディングです。ASCIIセット内の文字は、latin1のように1バイトでエンコードされます。それを超える文字は、最大4バイトを使用してエンコードされます。ASCII文字で構成される文字列は、UTF8とlatin1で同じ長さになります。

列レベルで文字セットを混合することは良い習慣ですか?

私はこれを行ったことがなく、データベーススキーマを不必要に複雑にするため、「いいえ」と言う傾向があります。データベースエンジンはそれをうまく処理できるはずですが、ストレージの考慮事項から混合文字セットを使用することはありません。節約はせいぜい最小限になります。

私が考えることができる文字セットを混合する唯一の正当な理由は、特定のソート順および/またはケース/アクセントセンシティブ/インセンシティブ検索に異なる照合を使用することです。

于 2010-12-22T18:44:46.417 に答える