sql >> Databasteknik >  >> RDS >> Mysql

När du har ett TEXT-fält i MySQL eller PostgreSQL, ska du lägga det i en separat tabell?

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.



  1. Hur man åtgärdar felaktigt strängvärde i MySQL

  2. Hierarkisk data i MySql

  3. Inget paket msyql-server tillgängligt

  4. Hur man installerar och säkrar MariaDB på CentOS 8