Endast fält som lagras i rad behöver kopieras. För fält som lagras out-of-line i TOAST-tabeller, kopieras endast referensen till TOAST-posten.
Huruvida ett fält lagras out-of-line beror på storleken på värdet i fältet och på fältets datatyp.
Om tuplarna är stora men bara har några få fält - som
some_id integer,
frequently_updated integer,
charblob text
då är det ingen mening med att ändra något eftersom uppdateringar av frequently_updated
kommer i allmänhet inte att skriva om data i charblob
, åtminstone om den är så stor att den är värd att bry sig om.
OTOH, om du har en tabell med många fält kommer du att skriva om mycket mer med varje uppdatering.
HOT kommer bara att hjälpa dig i begränsad utsträckning eftersom en HOT-uppdatering bara kan ske när inga uppdaterade kolumner ingår i ett index och det finns tillräckligt med ledigt utrymme på samma databassida. För breda rader får du inte plats med många kopior på en sida även med TOAST, så HOT kommer att vara till begränsad nytta.
Det kan vara värt att separera sådana fält i separata tabeller om de verkligen uppdateras ofta men resten av tabellen har breda rader som inte förändras mycket.