ホームページ  >  に質問  >  本文

mysql の最適化 - mysql テーブルでフィールド列の長さが一貫していることを保証できない場合、char を使用する必要はありませんか?

データ テーブルでは、各データ列の長さが固定されている場合、各データ行の長さも固定されます。データ テーブルに可変長のデータ列がある限り、各データ行の長さは固定されます。データ行が可変です。特定のデータ テーブルのデータ行の長さが可変の場合、ストレージ領域を節約するために、MySQL はこのデータ テーブルの固定長データを対応する列に変換します。可変長タイプ、長さが 4 文字未満の char データ列は varchar タイプに変換されません

テーブル内のフィールドが varchar の場合でも、このテーブルに char フィールドを作成することに意味はありますか?

PHP中文网PHP中文网2704日前667

全員に返信(1)返信します

  • 伊谢尔伦

    伊谢尔伦2017-05-24 11:35:08

    まず、char と varchar の違いを理解する必要があります。
    1. CHAR の長さは固定されていますが、VARCHAR2 の長さは変更できます。たとえば、文字列「abc」を格納する場合、CHAR (10) の場合、格納する文字は 10 バイト (7 つの NULL 文字を含む) を占めることになります。同じ VARCHAR2 (10) は 3 バイトの長さのみを占め、10 は最大値にすぎません。格納する文字が 10 未満の場合は、実際の長さに応じて格納されます。
    2. CHAR は VARCHAR2 よりもわずかに効率的です。
    3.現在、VARCHAR は VARCHAR2 の同義語です。業界標準の VARCHAR 型は空の文字列を格納できますが、Oracle はそれを行いません。ただし、将来的にはそうする権利を留保します。 Oracle は、VARCHAR2 データ型を開発しました。この型は、データベースの varchar 列に空の文字列を格納できる機能を変更して、NULL 値を格納します。下位互換性が必要な場合は、VARCHAR ではなく VARCHAR2 を使用することをお勧めします。
    いつ CHAR を使用し、いつ varchar2 を使用する必要がありますか?
    CHAR と VARCHAR2 は相反する一体であり、この 2 つは補完的です。
    VARCHAR2 は CHAR よりもスペースを節約しますが、効率性を高めるためにはある程度のスペースを犠牲にする必要があります。データベース設計において、私たちがよく「効率性のためのスペースのトレード」と呼ぶものです。
    VARCHAR2 は CHAR よりもスペースを節約しますが、VARCHAR2 列が頻繁に変更され、変更されるデータの長さが毎回異なる場合、「行の移行」現象が発生し、冗長 I/O が発生するため、これは回避する必要があります。この場合、VARCHAR2 の代わりに CHAR を使用することをお勧めします。
    この回答はBaiduの回答https://zhidao.baidu.com/ques...から引用しています
    回答は非常に詳しいと思います

    返事
    0
  • キャンセル返事