Ответ - да, это имеет значение, и это может иметь большое значение, но обычно не так много.
Все операции ввода-вывода выполняются на уровне страницы (обычно 2K или 4K в зависимости от вашей ОС). Данные столбцов для строк хранятся рядом друг с другом, за исключением случаев, когда страница заполняется, и в этом случае данные записываются на другой (обычно на следующей) странице.
Чем больше дискового пространства данных, необходимого для столбцов между (на основе определения таблицы) выбранными столбцами, тем больше вероятность того, что данные для выбранных столбцов будут (иногда) на разных страницах. Нахождение на другой странице может привести к дополнительной операции ввода-вывода (если на другой странице не выбраны другие строки). В худшем случае каждый выбранный вами столбец может находиться на отдельной странице.
Вот пример:
create table bad_layout (
num1 int,
large1 varchar(4000),
num2 int,
large2 varchar(4000),
num3 int,
large3 varchar(4000)
);
create table better_layout (
num1 int,
num2 int,
num3 int,
large1 varchar(4000),
large2 varchar(4000),
large3 varchar(4000)
);
Сравнение:
выберите num1, num2, num3 из bad_layout;
выберите num1, num2, num3 из better_layout;
Поскольку для bad_layout каждый столбец num в основном будет находиться на отдельной странице, для каждой строки потребуется 3 операции ввода-вывода. И наоборот, для better_layout столбцы num обычно находятся на одной странице.
Выполнение запроса bad_layout может занять в 3 раза больше времени.
Хорошая разметка таблицы может существенно повлиять на производительность запросов. Вы должны стараться, чтобы столбцы, которые обычно выбираются вместе, как можно ближе друг к другу в макете таблицы.