mysql:16503
From: yoku0825 <yoku0825 <yoku0825@xxxxxxxxxx>>
Date: Fri, 11 Jan 2019 17:27:51 +0900
Subject: [mysql 16503] Re: [mysql 16502] mysqlのvarcharとtext型について
鈴木123さんこんにちは。 yoku0825といいます。 > ネットの記事などだとvarcharもtextも中身は同じ仕組みと言いつつもvarcharを押している人が多いのですがそうなのでしょうか? 個人的には「2000文字くらい」とあたりがついていればvarchar(2000)を選びます、 「2万文字くらい(= utf8mb3換算で60000バイト)」と言われたらvarcharにする旨みがないのでTEXTにしてしまいます…という具合です。 それは単に、アプリケーションのバリデーションやこちらの想定をすり抜けて 本当に限界まで文字列を詰め込まれた時に ストレージが一気に枯渇するのが嫌だからそうしているだけで、↓で仰っているようなインラインページの関係ではなく、です。 > varcharの場合値は行バッファ内を、textの場合実際の値を含むチャンクへのポインタを参照していた記憶ですが、この差異にそこまで優位性があるのか気になり質問してみました。 varcharでも長すぎるとオフロードされる(デフォルトのページサイズで768バイト以上か未満か)ので、 varchar(2000)とTEXTではオフロードされ具合に違いは出ません。 ので、このvarchar(2000)やvarchar(4000)という文脈ではここは優位性にはならないと思うので、 varchar(2000) vs TEXTは単に「限界の文字列長を短めにしておきたいかそうでないか」というだけなんじゃないかなと思います。 ( ´-`).oO(と、InnoDBではこんな感じですがMyISAMとかNDBCLUSTERとかは扱いが違うような気もするので、 「InnoDBでは」俺もTEXT型は要らないんじゃないかなと思う気もします。個人の意見です。 yoku0825, 2019年1月9日(水) 16:22 <head492@xxxxxxxxxx>: > > こんにちは > 鈴木123といいます。 > > mysqlのvarcharとtext型を調べているのですが、不定形な入力項目用のカラムをvarchar(2000)やvarchar(4000)とするのに違和感があるため、2000文字近くの入力が想定される項目を入れるカラムを作成する際text型を利用しています。 > (桁数が大きいためDEFAULT値もindexも必要ないカラムです) > ネットの記事などだとvarcharもtextも中身は同じ仕組みと言いつつもvarcharを押している人が多いのですがそうなのでしょうか? > だとするとtext型が存在している必要がないんじゃないかなと考えています。 > varcharの場合値は行バッファ内を、textの場合実際の値を含むチャンクへのポインタを参照していた記憶ですが、この差異にそこまで優位性があるのか気になり質問してみました。 > ちなみにInnoDBを利用しています。
@ 16502 2019-01-09 16:21 [<head492@xxxxxxxxxx>] mysqlのvarcharとtext型について -> 16503 2019-01-11 17:27 ┗[yoku0825 <yoku0825@x] Re: [mysql 16502] mysqlのvarcharとtext型について