Inte med PostgreSQL, från handboken :
Alltså en kolumn med stora tecken (som TEXT
eller VARCHAR
utan en specificerad storleksgräns) lagras borta från huvudtabellens data. Så, PostgreSQL har din "lägg den i en separat tabell"-optimering inbyggd. Om du använder PostgreSQL, arrangera din tabell på ett förnuftigt sätt och lämna datalayouten till PostgreSQL.
Jag vet inte hur MySQL eller andra RDBM:er ordnar sina data.
Anledningen till denna optimering är att databasen vanligtvis kommer att hålla data för varje rad i angränsande block på disken för att minska antalet sökningar när raden behöver läsas eller uppdateras. Om du har en kolumn TEXT (eller annan typ av variabel längd) i en rad så är storleken på raden variabel så det krävs mer arbete för att gå från rad till rad. En analogi skulle vara skillnaden mellan att komma åt något i en länkad lista och att komma åt en array; med en länkad lista måste du läsa tre element ett i taget för att komma till det fjärde, med en array förskjuter du bara 3 * element_size
byte från början och du är där i ett steg.