SQL データベースで varchar よりも TEXT を使用する方が効率的ではありませんか?
もしそうなら、なぜですか?
そうでない場合は、常に TEXT を使用しないのはなぜですか?
ここでは特定のデータベースをターゲットにしているわけではありませんが、概念実証の一環として当面は MySQL でテストしていますが、オラクルがおそらく最も関連性があります。
SQL データベースで varchar よりも TEXT を使用する方が効率的ではありませんか?
もしそうなら、なぜですか?
そうでない場合は、常に TEXT を使用しないのはなぜですか?
ここでは特定のデータベースをターゲットにしているわけではありませんが、概念実証の一環として当面は MySQL でテストしていますが、オラクルがおそらく最も関連性があります。
マイクロソフトはこちらから
ntext、text、および image データ型は、Microsoft SQL Server の将来のバージョンで削除される予定です。新しい開発作業でこれらのデータ型を使用することは避け、現在それらを使用しているアプリケーションを変更することを計画してください。代わりに、nvarchar(max)、varchar(max)、および varbinary(max) を使用してください。
varchar(max)
over text を使用する場合は、節WHERE
で使用できます。これは、小さい方の対応するものと同じように機能するためvarchar,nvarchar and varbinary
です。以下は、使用されるべきものとは対照的に、使用されるべきものの小さなリストです。
PostgreSQLのドキュメントには次のように書かれています:
ヒント: これらの 3 つのタイプの間にパフォーマンスの違いはありません。ただし、空白が埋め込まれたタイプを使用する場合のストレージ サイズの増加と、長さの制約のある列に保存する場合に長さをチェックするための余分なサイクルがいくつかあることは別としてです。character(n) は他のデータベース システムではパフォーマンス上の利点がありますが、PostgreSQL ではそのような利点はありません。ほとんどの場合、代わりにテキストまたは文字の変化を使用する必要があります。
簡単な答えは次のとおりです。はい、効率的ではありません。
より長く、より複雑な答えは次のとおりです。
はい、おそらく効率が悪いでしょう。使用している DBMS やテーブルのサイズなどによって異なります。TEXT フィールドは可変幅であるため、DBMS はレコードを検索する際により多くの作業を行う必要があります。これがパフォーマンスに与える影響は、DBMS の一般的な効率性、表の行に関するデータの量、および固定長の表を最適化するかどうかに正比例します。
MySQL が固定長のテーブル行でより高速に動作することは知っていますが、最初にテーブルを固定長テーブルとして扱うことができることを伝える必要があります。実際の数値を関連付けることができる他の DBMS の実際の経験はありません。しかし、大量の (100 万以上の) レコードを含むテーブルでは、大きな違いが生じる可能性があります。ただし、テーブルが小さい場合は、実質的な違いはほとんどまたはまったくありません。
話しているデータベースについて具体的に説明する必要があります。少なくとも一部のデータベースでは、TEXT はテーブル自体 (参照のみを含む) とは別の CLOB として格納されていると考えています。これにより、テーブルが小さくなります (良い) が、追加のルックアップとフェッチ時のおそらくキャッシュ ミス (悪い) につながります。
おそらくインデックス作成とクエリの影響もありますが、使用している特定の RDBMS によって異なります。