Я мог бы неправильно понять вопрос, но здесь все равно:
Абсолютное число выбранных вами столбцов не имеет большого значения. Однако , какие выбранные столбцы могут иметь существенное значение в зависимости от индексации таблицы.
Если вы выбираете только столбцы, которые охватываются индексом, то механизм БД может использовать только индекс для запроса, даже не извлекая данные таблицы. Если вы используете хотя бы один столбец, который не охвачен, он должен извлечь всю строку (поиск ключей), и это значительно снизит производительность. Иногда это приводит к снижению производительности настолько, что ядро БД предпочитает выполнять полное сканирование, а не беспокоиться об индексе; это зависит от количества выбранных строк.
Таким образом, если, удалив столбцы, вы сможете превратить это в закрывающий запрос, то да, это может повысить производительность. В противном случае, вероятно, нет. Во всяком случае, не заметно.
Быстрый пример для SQL Server 2005+ - допустим, это ваша таблица:
ID int NOT NULL IDENTITY PRIMARY KEY CLUSTERED,
Name varchar(50) NOT NULL,
Status tinyint NOT NULL
Если мы создадим этот индекс:
CREATE INDEX IX_MyTable
ON MyTable (Name)
Тогда этот запрос будет быстрым:
SELECT ID
FROM MyTable
WHERE Name = 'Aaron'
Но этот запрос будет медленным (er):
SELECT ID, Name, Status
FROM MyTable
WHERE Name = 'Aaron'
Если мы изменим индекс на индекс покрытия, то есть
CREATE INDEX IX_MyTable
ON MyTable (Name)
INCLUDE (Status)
Затем второй запрос снова становится быстрым, потому что движку БД никогда не нужно читать строку.