Ikke med PostgreSQL, fra manualen :
Altså en kolonne med store tegn (såsom TEXT
eller VARCHAR
uden en specificeret størrelsesgrænse) gemmes væk fra hovedtabeldataene. Så PostgreSQL har din "sæt det i en separat tabel"-optimering indbygget. Hvis du bruger PostgreSQL, skal du arrangere din tabel fornuftigt og overlade datalayoutet til PostgreSQL.
Jeg ved ikke, hvordan MySQL eller andre RDBM'er arrangerer deres data.
Årsagen bag denne optimering er, at databasen normalt vil opbevare dataene for hver række i sammenhængende blokke på disken for at skære ned på at søge, når rækken skal læses eller opdateres. Hvis du har en TEKST (eller anden variabel længde type) kolonne i en række, så er rækkens størrelse variabel, så der skal mere arbejde til for at gå fra række til række. En analogi ville være forskellen mellem at få adgang til noget i en sammenkædet liste versus at få adgang til et array; med en sammenkædet liste skal du læse tre elementer et ad gangen for at komme til det fjerde, med et array forskyder du bare 3 * element_size
bytes fra begyndelsen, og du er der i ét trin.