vt_test
AS
SELECT 'Hello' ::varchar (32) AS a;
SELECT pg_column_size(a) FROM vt_test; -- Возвращает 6
SELECT pg_column_size ('Hello'::varchar (32)); -- возвращает 9
А вот так снова возвращает 6: Select pg_column_size('Hello);
Явно это длина 4 байта + тело = 9 Для штучных переменных выгоднее хранить длину всегда в 4 байтах, чтобы убрать один IF. Для хранения в таблице уже имеет смысл экономить эти 3 байта. Из документации я понял, что вызывать pg_column_size от колонки таблицы смысле есть, а от всего остального — не очень.
Обсуждают сегодня