Nie z PostgreSQL, z podręcznika :
Tak więc kolumna z dużymi znakami (taka jak TEXT
lub VARCHAR
bez określonego limitu rozmiaru) jest przechowywany z dala od danych tabeli głównej. Tak więc PostgreSQL ma wbudowaną optymalizację typu "umieść to w oddzielnej tabeli". Jeśli używasz PostgreSQL, ułóż tabelę rozsądnie i pozostaw układ danych dla PostgreSQL.
Nie wiem, jak MySQL lub inne RDBM porządkują swoje dane.
Powodem tej optymalizacji jest to, że baza danych zwykle przechowuje dane dla każdego wiersza w ciągłych blokach na dysku, aby ograniczyć wyszukiwanie, kiedy wiersz musi zostać odczytany lub zaktualizowany. Jeśli masz kolumnę TEKST (lub inny typ o zmiennej długości) w wierszu, rozmiar wiersza jest zmienny, więc potrzeba więcej pracy, aby przejść od wiersza do wiersza. Analogią byłaby różnica między dostępem do czegoś na połączonej liście a dostępem do tablicy; z połączoną listą, musisz przeczytać trzy elementy pojedynczo, aby dostać się do czwartego, z tablicą, którą właśnie przesuniesz 3 * element_size
bajtów od początku i jesteś tam w jednym kroku.