1. ホーム
  2. string

[解決済み] textとvarcharの違い(character varying)

2022-03-20 06:44:08

質問

の違いは何ですか? text データ型と character varying ( varchar ) のデータ型は?

によると ドキュメント

<ブロッククオート

長さ指定子なしでcharacter varyingを使用した場合、任意の大きさの文字列を受け付ける。後者はPostgreSQLの拡張です。

さらに、PostgreSQLは任意の長さの文字列を格納するtext型を提供します。text型は標準SQLにはありませんが、他のいくつかのSQLデータベース管理システムも同様にtext型を持っています。

では、何が違うのでしょうか?

どのように解決するのか?

違いはありません。 varlena ( 可変長配列 ).

デペスのこの記事をチェック http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/

ハイライトをいくつか紹介します。

総括すると

  • char(n) - より短い値を扱う場合、スペースがかかりすぎる。 n (にパッドする)。 n を追加するため、微妙な誤差が生じる可能性があります。 を変更するのは問題があります。
  • varchar(n) - ライブ環境で制限を変更するのは問題がある(テーブルを変更する際に排他ロックが必要)。
  • varchar - テキストと同じです。
  • text - 私にとっては勝者 - (n)データ型には問題がなく、varcharには明確な名前があるためです。

この記事では、4つのデータ型すべてについて、挿入と選択のパフォーマンスが同程度であることを示すために詳細なテストを行っています。また、必要なときに長さを制約する別の方法についても詳しく見ています。関数ベースの制約やドメインは、長さの制約を即座に増加させるという利点を備えており、文字列の長さの制約を減少させることはまれであることに基づいて、depeszは、長さの制限には通常これらのいずれかが最良の選択であると結論付けています。