Відповідь Даніеля зосереджується на вартості читання окремих рядків. У цьому контексті: розміщення NOT NULL
стовпців фіксованого розміру спочатку у вашій таблиці мало допомагає. Поставлення спочатку відповідних стовпців (тих, про які ви запитуєте) мало допомагає. Мінімізація прокладки (завдяки вирівнюванню даних), граючи вирівнювання тетрісу зі своїми стовпцями, може трохи допомогти. Але найбільш важливий ефект поки не згадується, особливо для великих столів.
Додаткові стовпці очевидно роблять рядком більше місця на диску, так що на одній сторінці даних розміщується менше рядків (8 кБ за замовчуванням). Окремі рядки розкладені на більше сторінок. Двигун бази даних, як правило, повинен отримувати цілі сторінки, а не окремі рядки . Мало значення, чи є окремі рядки дещо меншими чи більшими - до тих пір, поки має бути прочитана однакова кількість сторінок.
Якщо запит отримує (відносно) невелику частину великої таблиці, де рядки розподіляються більш-менш випадковим чином по всій таблиці, підтримується індексом, це призведе до приблизно однакової кількості прочитаних сторінок, при цьому мало уваги до розміру рядка Нерелевантні стовпці не дуже сповільнить вас у такому (рідкісному) випадку.
Як правило, ви будете отримувати патчі або кластери рядків, які були введені в послідовності або близькості, та обмінюватися сторінками даних. Ці рядки розкинуті через безлад, для задоволення вашого запиту потрібно прочитати більше сторінок диска. Необхідно прочитати більше сторінок, як правило, є найважливішою причиною повільнішого запиту. І це найважливіший фактор, чому нерелевантні стовпці роблять ваші запити повільнішими.
З великими базами даних, як правило, недостатньо оперативної пам'яті, щоб зберігати все це в кеш-пам'яті. Більші рядки займають більше кешу, більше суперечок, менше звернень кешу, більше дискових вводу-виводу. А читання дисків, як правило, набагато дорожче. Менше це стосується SSD, але істотна різниця залишається. Це додає до вищезгаданого пункту про читанні сторінки.
Це може мати значення або не мати значення, якщо неактуальні стовпці будуть TOAST-ed. Відповідні стовпці також можуть бути TOAST-ed, що призведе до того ж ефекту.