[解決済み] MySQLのVARCHARとTEXTの違い【重複】について
質問
MySQLでテーブルを作成する際に
VARCHAR
カラムの長さを設定する必要があります。しかし
TEXT
型の場合、長さを指定する必要はありません。
とはどのような違いがあるのでしょうか?
VARCHAR
と
TEXT
?
解決方法は?
TL;DR
TEXT
- 最大文字数65535文字固定(最大文字数を制限することはできません。)
-
2 +を取る
c
バイトのディスクスペース、ここでc
は格納された文字列の長さです。 - はインデックスの(完全な)一部にはなりえません。前置詞の長さを指定する必要があります。
VARCHAR(M)
-
の可変最大サイズです。
M
文字 -
M
1から65535の間である必要があります -
は1 +を取る
c
バイト(ただしM
≤ 255以下)または2個以上c
(256≦の場合M
≤ 65535) バイトのディスクスペースが必要です。c
は格納された文字列の長さ - はインデックスの一部である可能性があります。
詳細
TEXT
があります。
固定
最大サイズ
2¹⁶-1 = 65535
の文字が表示されます。
VARCHAR
があります。
変数
最大サイズ
M
まで
M = 2¹⁶-1
.
のサイズは選べないんですね。
TEXT
しかし
VARCHAR
.
もうひとつの違いは、インデックス(フルテキストインデックスを除く)を
TEXT
カラムになります。
そのため、カラムにインデックスを付けたい場合は
VARCHAR
. しかし、インデックスの長さにも制限があることに注意してください。
VARCHAR
カラムが長すぎる場合は、最初の数文字だけを使用する必要があります。
VARCHAR
のドキュメントを参照してください。
CREATE INDEX
).
しかし、あなたはまた
VARCHAR
のみであることが分かっている場合、入力文字列の最大長は
M
例えば、電話番号や名前など、このようなものです。そうすると
VARCHAR(30)
の代わりに
TINYTEXT
または
TEXT
そして、もし誰かが3冊の指輪物語を電話番号の欄に保存しようとしたら、最初の30文字しか保存されません :)
編集してください。
データベースに保存したいテキストが65535文字より長い場合は
MEDIUMTEXT
または
LONGTEXT
が、注意してください。
MEDIUMTEXT
は16MBまでの文字列を保存します。
LONGTEXT
は4GBまで。もし
LONGTEXT
で、PHP経由でデータを取得する場合(少なくとも
mysqli
を使わずに
store_result
なぜなら、PHP は文字列全体をバッファリングできるように 4GB のメモリを確保しようとするからです。これは、PHP 以外の言語でも発生する可能性があります。
しかし 常に 入力内容を確認する (長すぎないか?変なコードが含まれていないか?) 前に データベースに格納する。
お知らせ どちらのタイプでも、必要なディスク容量は保存される文字列の長さのみに依存し、最大長には依存しない。
例
charset latin1 を使用し、テキスト "Test"を
VARCHAR(30)
,
VARCHAR(100)
と
TINYTEXT
の場合、常に5バイト(文字列の長さを格納するための1バイトと各文字のための1バイト)を必要とします。もし、同じテキストを
VARCHAR(2000)
または
TEXT
列の場合も同じスペースが必要ですが、この場合は6バイト(文字列長を格納するための2バイトと各文字のための1バイト)になります。
より詳細な情報は ドキュメント .
最後に、どちらも注意事項を付け加えておきます。
TEXT
と
VARCHAR
は可変長データ型であるため、データを保存するためのスペースを最小限に抑えられる可能性が高い。しかし、これは性能とのトレードオフになる。よりよいパフォーマンスが必要な場合は
CHAR
. 詳しくはこちら
こちら
.
関連
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?[重複しています]。
-
[解決済み] varcharとnvarcharの違いは何ですか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] MySQLです。大きなVARCHARとTEXTの比較?
-
[解決済み] TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXTの最大保存サイズ
-
[解決済み] MySQLで重複する値を検索する
-
[解決済み] textとvarcharの違い(character varying)
-
[解決済み] MySQL型テキストの最大長
-
[解決済み】MySQLのDatetimeカラムにデフォルト値を設定する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのデータバックアップにmysqldumpを使用する方法
-
MySQLデータベース・インデックスの左端一致の原則
-
mysqlインデックスが長すぎる特殊なキーが長すぎる解決策
-
[解決済み】SQLサーバーのテンポラリーテーブルで「すでに名前のついたオブジェクトがあります」エラーが発生する。
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
MySQLの起動エラー:ERROR 2003 (HY000)。localhost'上のMySQLサーバーに接続できない(10061)
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] MySQLです。大きなVARCHARとTEXTの比較?
-
[解決済み] MySQLのutf8mb4とutf8 charsetsの違いは何ですか?
-
[解決済み】MySQLでテキストカラムにデフォルト値を設定できないのはなぜですか?