Хотя легко документироваться, что NULL занимают только 1 бит в заголовке кортежа postgresql для строки, сколько места занимают NULL в INDEX пустого столбца (не кортежа, а индекса)? Это тот же 1 бит в индексе, что и в кортеже, или это полный размер типа данных столбца (например, целое число = 4 байта)?
Контекст для вопроса заключается в том, что у меня есть таблица postgresql, в которой есть 3 ссылочных столбца (например, foo_id, bar_id и baz_id), и для любой строки значение имеет только один из этих столбцов (остальные 2 столбца НОЛЬ). Однако мне нужно, чтобы все 3 столбца были проиндексированы. Предполагая, что каждый столбец является целым числом (4 байта в postgresql), каждая строка должна занимать 4 байта (для ненулевого столбца) плюс 2 бита (для 2 пустых столбцов). Однако, если бы я добавил индексы для всех 3 столбцов, хранилище для 3 индексов было бы либо 12 байтами (если индекс занимает полные 4 байта для нулевого значения), либо теми же 4 байтами + 2 бита, что и в сам кортеж.