あるvarcharだけで残りは以前からtext周囲に来た、またはあなたが考えケースが使用されたい使用するにはvarchar?(またはcharそのことについて..)
(私は毎日PostgresとMySQL(MyISAM)を使用しているので、それらは私が最も興味を持っているものですが、他のデータベースへの回答はもちろん歓迎です。^ _-)
あるvarcharだけで残りは以前からtext周囲に来た、またはあなたが考えケースが使用されたい使用するにはvarchar?(またはcharそのことについて..)
(私は毎日PostgresとMySQL(MyISAM)を使用しているので、それらは私が最も興味を持っているものですが、他のデータベースへの回答はもちろん歓迎です。^ _-)
回答:
text列は非標準であり、実装に固有です。多くの場合、データベースに応じて、彼らは、以下の制限のうちの1つ以上の組み合わせを有していてもよい:刃先交換式ではない、検索できないとソート可能ではありません。
これらのタイプはすべて、同じCデータ構造を使用して内部的に保存されます。。
このtext列は特別なバージョンでBLOBあり、インデックス作成に制限があります。
これらの2つの例は、他のSQL RDBMSシステムに外挿することができ、あるタイプを他のタイプよりも選択するタイミングを理解するのに十分な理由になるはずです。
暗黙的に明確にするために、
TEXT独自仕様で非標準なので使用しないでください。どれでもSQLあなたがそれに対して書き込みをしますないポータブルで、あなたの将来に問題を引き起こすことが保証されます。ANSI標準の一部であるタイプのみを使用してください。
CHARすべてのエントリに一定の文字数があることがわかっている場合に使用します。VARCHARすべてのエントリに可変数の文字がある場合に使用します。VARCHAR、提供することができCLOBてUTF-8エンコーディングまたは同等の標準タイプを。TEXT、それは非標準であるとして。non standard and implementation specific、not indexable, not searchable and not sortable私は気づきませんでした。私は印象の下にあったtext た標準化しました。
text、文字型として何かを見つけることはないと思います。私は何も見ませんでした、いくつかのベンダーはそれlong charを呼んでいます、そして、それは基本的に、それに接続されたエンコーディングを持つBLOBです。
TEXT」と結論づける(Postgres環境の場合)信頼できるリソースがたくさんあります。別のデータベースに移行する場合、特にpostgresの無制限VARCHAR(TOASTにより、MySQLのような行制限がない)が無制限VARCHARに変換されない可能性があることを考慮する必要があるため、それはほとんど問題になりませんとにかく他のデータベース。
text、varcharおよびcharすべて異なる理由で使用されます。もちろん、実装の違い(それらが占めるサイズなど)がありますが、使用法と意図の考慮事項もあります。使用するタイプは、そこに格納されるデータの種類に関する情報も提供します(または、すべてに使用textします)。何かが固定長の場合、を使用しますchar。上限が明確に定義された可変長の場合は、を使用しますvarchar。それがあなたがほとんど制御できないテキストの大きな塊であるtextなら、おそらくあなたの最善の策でしょう。
char、varchar、とは、textすべて同じ格納するために設計されているタイプのデータを。したがって、ここでの両方の答えは、境界チェックに関するものです。効率の違いがある場合、それらは何ですか? なぜvarcharover を使用するのtextですか?
データベースは、パフォーマンス、つまり速度とストレージの最小化に大きな関心を寄せています。コンピュータの世界の他のほとんどの部分では、文字列に含まれる文字数について気にすることはありません。1つでも、百科事典の内容全体でもかまいません。それはすべて単なる文字列です。実際、多くの言語は文字列か数字かを気にしません。
しかし、コンピューターがより高速になり、より多くのメモリを獲得するにつれて、人々はより多くのデータをデータベースに入れて、よりクエリを実行します。データベースの場合、CPUとメモリは、64 KBのメインメモリと10 MBのハードドライブ(メインフレームコンピューター上)の時代と同様に、今日では制限されています。
固定長のバイトは、可変長の数字よりもはるかに扱いやすいです。10バイトは1,000,000よりもはるかに簡単に処理できます。したがって、データベースでは、テラバイト単位のデータからマイクロ秒単位で数ギガバイトの結果を得ることができるように、データベースに手がかりを与えたいと考えています。データベースをそれほど熱心に使用していない場合、データベースが提供する速度は必要なく、不必要な質問に悩まされます。ただし、パフォーマンスが必要な場合は、喜んでヒントを提供してください。
他の回答で述べたように、使用することは、charそれは常に、特定の文字数を使用した場合varcharの長さは変化することができますが、それが大きくなりすぎていない場合は(私の推測ではあるほとんどのDBのように扱うことをcharやtextサイズに応じて)、およびtextそれならば長さは任意です。あなたのSQLを使用しようとする場合はtext、列を、それが何らかの形でそれを要約し、それを置くために最善であるかもしれないcharか、小さなvarchar、列、そしてやるwhereのをしてorder by'は上です。もちろん、それはパフォーマンスがあなたにとって重要な場合のみです。
text推奨されていません。また、データの保存場所とそのためのアクセス方法に関連する使用上の考慮事項もあります。