Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Скорость выполнения SELECT * и SELECT Fld  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
Приветсвую всех.
Хотел спросить отличается ли скорость выборки данных в случае когда на стороне сервера
выполняешь SELECT TOP 1 * и SELECT TOP 1 Fld из определенной таблицы?
И если да, то зависит ли это от количества столбцов и от того какого типа эти столбцы, скажем varbinary(MAX) и tinyint может быть

Спасибо за внимание
22 июн 09, 21:21    [7330754]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
_djХомяГ
Guest
сетевой траффик
22 июн 09, 21:27    [7330765]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
т.е. влияет?
22 июн 09, 21:33    [7330773]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
Glory
Member

Откуда:
Сообщений: 104760
orunbek
т.е. влияет?

Разумеется разница между выборкой 1байтного tinyint и 2х гигибайтного varbinary(MAX)
22 июн 09, 21:35    [7330777]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
Glory
orunbek
т.е. влияет?

Разумеется разница между выборкой 1байтного tinyint и 2х гигибайтного varbinary(MAX)

ок, спасибо, вопрос закрыт
22 июн 09, 21:37    [7330782]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а еще индексы, все забывают про этот момент..
в не самых простых случаях select * будет чаще сваливаться к сканам по сравнению с select fld, особенно если по fld есть явный или неявный (включенное поле) индекс
23 июн 09, 10:22    [7331637]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
скан по содержимому WHERE наверно будет или я ошибаюсь?
23 июн 09, 14:37    [7333314]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
_djХомяГ
Guest
гипотетически: предположим по полю(ям) поиска (where) построен индекс, а в select'e выбирается * (все поля) - поэтому серверу надо будет выполнить доп операцию bookmark lookup, чтобы выбрать значения остальных полей. Если выбираем то же поле(я), которо(ы)е отражено(ы) в where с учётом присутствия индекса, то в идеале всё будет заканчиваться операцией INDEX SEEK (BOOKMARK LOOKUP не нужен), что соответственно приведёт к более быстрому отклику со стороны сервера.
23 июн 09, 16:29    [7334137]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
грубо говоря
SELECT * при первой возможности никогда не делать?
23 июн 09, 20:00    [7335063]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
и еще один вопрос отличается ли скорость обработки таких команд:
select 'exists' where exists (select top 1 * from FROM TblTemp WHERE FldName='ABC')
от
select 'exists' where exists (select top 1 FldName from FROM TblTemp WHERE FldName='ABC')
23 июн 09, 20:02    [7335069]     Ответить | Цитировать Сообщить модератору
 Re: Скорость выполнения SELECT * и SELECT Fld  [new]
Crimean
Member

Откуда:
Сообщений: 13148
не надо top в exists. это бага была конкретного билда сиквела, быстро поправленная
а к списку полей всегда надо внимательно относиться. это весьма важно
23 июн 09, 20:22    [7335111]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить