Мне было интересно, если SELECT
SELECT
несет любую дополнительную производительность, или если база данных достаточно умна, чтобы ее оптимизировать.ВЫБОР SELECT
К примеру, у меня есть несколько выбирает я делаю так:
SELECT a.year, b.month, c.day, totalVolume from
(SELECT DATEPART(year, transactionTime) as year,
DATEPART(month, transactionTime) as month,
DATEPART(day, transactionTime) as day,
SUM(volume) as totalVolume FROM DOW30
GROUP BY DATEPART(year, transactionTime),
DATEPART(month, transactionTime),
DATEPART(day, transactionTime)) a
order by a.year, b.month, c.day
Все это конкретный запрос делает группу все торги в Dow30 по дате, и суммирует общий объем. Я использую это, потому что таблица хранит каждую сделку в секунду, и я хочу ее обновить каждый день.
Это не полный запрос, а просто пример. Я знаю, что могу просто сделать это из одного SELECT
, но мне было интересно, не сделает ли SELECT
SELECT
какой-то штраф за производительность, или если все это будет оптимизировано волшебным образом.
Причина, почему я сформулировать запрос таким образом, происходит потому, что, как я себе запрос, и я на самом деле присоединиться к топ-уровня select
с другой таблицей, и выбрав из колонок от основной SELECT
делает его более легким для меня визуализировать запрос. Но, не имея формального фона DBA, я не уверен, что это неправильно, и если мне нужно выяснить лучший способ написания моих запросов.
Вы имели вид на план запроса? Я не знаю, как получить его для sql-сервера, но, возможно, вы сами это узнаете. Он покажет вам, как база данных видит ваш запрос. – fkerber
Я не эксперт SQL Server, но я бы ожидал, что сервер будет оптимизировать ...поскольку речь идет не об угадывании, а о знании единственного способа узнать, это проверить план запроса для запроса, - тогда вы можете видеть, что делает сервер из этого, он может даже дать вам некоторый намек на необходимость индекса ... – Yahia