Ответ Даниэля фокусируется на стоимости чтения отдельных строк. В этом контексте: Помещение NOT NULL
столбцов фиксированного размера в первую очередь в вашей таблице немного помогает. Помещение соответствующих столбцов первым (те, которые вы запрашиваете) немного помогает. Минимизация заполнения (из-за выравнивания данных), играя тетрис выравнивания с вашими столбцами, может немного помочь. Но самый важный эффект пока не упомянут, особенно для больших столов.
Очевидно, что из-за дополнительных столбцов строка занимает больше места на диске, поэтому на одной странице данных умещается меньше строк (по умолчанию 8 КБ). Отдельные строки расположены на нескольких страницах. Механизм базы данных обычно должен извлекать целые страницы, а не отдельные строки . Не имеет значения, являются ли отдельные строки несколько меньше или больше - до тех пор, пока нужно прочитать одинаковое количество страниц.
Если запрос извлекает (относительно) небольшую часть большой таблицы, где строки распределены более или менее случайным образом по всей таблице, поддерживаемой индексом, это приведет к примерно одинаковому количеству чтений страниц, с небольшим вниманием в размер строки. Нерелевантные столбцы не будут сильно тормозить вас в таком (редком) случае.
Как правило, вы будете извлекать патчи или кластеры строк, которые были введены в последовательности или близости, и обмениваться страницами данных. Эти строки разбросаны из-за беспорядка, чтобы удовлетворить ваш запрос, нужно прочитать больше страниц на диске. Необходимость читать больше страниц, как правило, является наиболее важной причиной замедления запроса. И это самый важный фактор, почему нерелевантные столбцы замедляют ваши запросы.
Для больших баз данных обычно недостаточно оперативной памяти, чтобы хранить все это в кэш-памяти. Большие строки занимают больше кеша, больше конфликтов, меньше обращений к кешу, больше дискового ввода-вывода. А чтение с диска обычно намного дороже. Меньше так с SSD, но существенная разница остается. Это добавляет к вышеупомянутому пункту о чтениях страницы.
Это может иметь значение, а может и не иметь значения, если не относящиеся к делу столбцы имеют значение TOAST. Соответствующие столбцы также могут быть TOAST-ed, возвращая большую часть того же эффекта.