2017-02-27 7 views
0

私はそれを読んで"If you put a greater value than 255 it will be converted to a TEXT type"最大サイズを設定する点は何ですか?mysqlのvarchar()の最大サイズを設定する際のポイントは何ですか?

+1

いつもVarCharを255にする必要はありません。たとえば、パスワードがvarcharの場合は6桁です。これを6に設定すると、ユーザーがdbを解析しようとするとエラーが発生します。 – Smit

+0

これは255に設定されている場合に限り、サイズがその制限を超えた場合はTEXTに変換されます。さもなければエラーを投げますか? –

+2

このような誤解は、*回避する* w3foolsを推奨する理由です。実際の問題は、w3foolsが頑固にこのような虚偽の記述を拒否してしまうことです。)n> 255のときは、VARCHAR(n)がTEXTに変換されるのは偽* 。 (これは、MySQL 5.1,5.6、および5.7の場合、FALSEです。本当に古いバージョンのMySQLの場合は本当ですか?)VARCHARとTEXTの間にはいくつかの重要な違いがあります。そして、あなたが他のものを使用するいくつかの良い理由があります。 255文字を超えるのは正当な理由ではありません。 – spencer7593

答えて

1

最大長を指定する理由の1つは、VARCHAR 'が最大255文字(or more)のcharsであっても、インデックス用です。 実際にが使用されている文字数をデータベースに伝えたい場合、インデックスが効率的で、ストレージエンジンが対応できるようにする必要があります。インデックスに含めることができるデータの量には制限があります(MyISAMInnoDBを参照してください)

「どこでもTEXTを使用するだけではいかがですか?まあ、それは効率的なストレージではない、インデックスで使用することはできません、そしてそれは別の検索特性も持つことができます。

も参照してくださいDifference between VARCHAR and TEXT in mysql

0

はいつもあなたが例えば255に行くvarchar型を必要としない、パスワードのvarchar型は、私は、ユーザーが自分のDBに解析しようとするならば、それは意志ので、6に設定しますよりも6桁ですスローエラー。あなたがメッセージを期待しているときにそれを255に設定することができます。

@Paulはメモリについても言及しています!メモリと検索の特性も異なります。

はい、テキストが255を超えていると、エラーが発生します。

1

この情報はわずか10年です。 Oracleが自分のサイトから古いバージョンを削除しているので、私はマニュアルをリンクすることはできませんが、引用は次のとおりです。

前のMySQL 5.0.3、255は最小のTEXT型に変換されたよりも大きい長さ仕様 とVARCHAR列に は、指定された長さの値を保持できます。たとえば、VARCHAR(500)は がTEXTに変換され、VARCHAR(200000)がMEDIUMTEXTに変換されました。 これは互換性の機能でした。ただし、この変換は、末尾のスペースの削除に影響します( )。

明らかに、VARCHARは、MySQL/3.23まで255を超えるサイズを受け入れていませんでした。彼らは、これが下位互換性を維持するための素晴らしい方法であり、後に決定を元に戻すことになると考えました。

+0

そして、MySQL 5.0は何十年前にリリースされましたか? – spencer7593

+0

@ spencer7593おそらくもっと。私は2007年10月にダウンロードしたCHM形式のドキュメントのローカルコピーを保持しています;-) –

関連する問題