Вы не получите большой пользы от перехода с Select * на Select column1, column2, .... Однако вы должны сделать это, потому что это хорошее кодирование. Если в будущем кто-то изменит порядок столбцов или количество столбцов, это может привести к сбою отчетов в зависимости от их построения.
Как насчет другого подхода? Если вы можете добавить некластеризованные индексы в свои таблицы, я бы посоветовал изучить это. В частности, посмотрите на существующие подзапросы и посмотрите, есть ли у столбцов в разделе «Где» индекс. Если этого не произойдет, вы будете выполнять сканирование таблицы каждый раз, когда существующий возвращает false, и вы можете выполнять сканирование таблицы каждый раз, даже если оно возвращает true (это зависит от того, где находится значение). Некластеризованные индексы позволят подзапросам быстро находить любые результаты в вашей таблице. Иногда вам приходится использовать неэффективные запросы, но если вы можете оптимизировать структуру таблиц с помощью индексов, это окажет гораздо меньшее влияние на вашу скорость.
Кроме того, для ваших подзапросов Exists когда-либо будет получен максимум 1 результат? Если это так, то вы можете попробовать сделать левое соединение с таблицей. Это, вероятно, не поможет, если у вас нет индекса для обоих наборов столбцов слева и справа от вашего объединения, но если вы это сделаете, это должно быть довольно полезно, поскольку вы в основном сканировали бы правую таблицу 1 раз, а не один раз в строке .