PostgreSQLではなく、マニュアル から :
したがって、大きな文字列(TEXT
など) またはVARCHAR
サイズ制限が指定されていない場合)は、メインテーブルデータから離れて保存されます。そのため、PostgreSQLには「別のテーブルに配置する」最適化が組み込まれています。PostgreSQLを使用している場合は、テーブルを適切に配置し、データレイアウトをPostgreSQLに任せてください。
MySQLまたは他のRDBMがデータをどのように配置するかわかりません。
この最適化の背後にある理由は、データベースは通常、各行のデータをディスク上の連続したブロックに保持して、行の読み取りまたは更新が必要な場合のシークを削減するためです。行にTEXT(または他の可変長タイプ)列がある場合、行のサイズは可変であるため、行から行に移動するにはさらに作業が必要です。類推は、リンクリスト内の何かにアクセスすることと配列にアクセスすることの違いです。リンクリストでは、3つの要素を一度に1つずつ読み取って、4番目の要素に到達する必要があります。配列では、3 * element_size
をオフセットします。 最初からバイトで、1つのステップでそこにいます。