Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как работает Select  [new]
Sergy_1
Guest
Есть таблица Table1.
Как работает оператор Select при выборке из этой таблицы, т.е. создает ли sql server что-то типа курсора при сканировании таблицы?
17 сен 03, 12:32    [342228]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
есть сервера с открытыми сорсами (майскуль, постгре), там можно посмотреть, что и как
17 сен 03, 12:34    [342233]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
Курсоры ты (точнее всякие гриды и пр.) из клиента создаешь...
17 сен 03, 12:35    [342237]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
ДоКТор
Guest
Читай справочную литературу по языку SQL
17 сен 03, 12:36    [342241]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
Sergy_1
Guest
Меня интересует как на физическом работает оператор Select, при сканировании таблицы строит ли он что-то типа курсора или просто сканирует страницы в памяти?
17 сен 03, 14:12    [342557]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
Glory
Member

Откуда:
Сообщений: 104760
It depends как говорят англичане. Прежде всего от того какую часть engine-а вы имете ввиду.
17 сен 03, 14:29    [342600]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
Sergy_1
Guest
Возмем самый простой вариант.
Есть таблица:

CREATE TABLE [dbo].[Table1] (
[id1] [int] IDENTITY (1, 1) NOT NULL ,
[descr] [varchar] (50) NULL
) ON [PRIMARY]


Оператор такого типа : Select * from Table1
на физическом уровне будет строить курсор. Согласно плану выполнения запроса:
1) Сканирование таблицы
2) Сам селект собственно.

Отсюда вопрос, в каких случаях (если таковые есть) будет строится курсор для select?
17 сен 03, 15:02    [342701]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
Glory
Member

Откуда:
Сообщений: 104760
Да я понимаю какой запрос вы имеете ввиду. Я не понимаю что вы имеете ввиду под "на физическом уровне". Что для вас является физическим уровнем ? Relational Engine ? Storage Engine ?
17 сен 03, 15:22    [342753]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
Sergy_1
Guest
Просто один мой знакомый очень усердно утверждает, что при ЛЮБОМ селекте sql проходит черех курсор. Я с ним не согласен и хотел бы спросить так это или не так? При селекте (простейшем) происходит, как я понимаю, сканирование таблицы или индекса, чтобы достать данные. Так вот мой знакомый утверждает, что для этого sqlserver строит курсор!!! Хотелось бы понять кто прав.
17 сен 03, 17:06    [343043]     Ответить | Цитировать Сообщить модератору
 Re: Как работает Select  [new]
Glory
Member

Откуда:
Сообщений: 104760
Дело в том что физическим сканированием страниц данных(и самой таблицы и индекса) и обработкой этих данных с предоставлением результата клиенту в SQL занимаются 2 разных engine-а - Storage и Relational соотвтественно.

Поэтому фраза "что при ЛЮБОМ селекте sql проходит черех курсор." без дополнительных объяснений вроде "что такое проходит и что такое курсор" не имеет никакого смысла. Единственное на что она слабо походит так это на то что

"The relational engine uses the OLE DB API to request that the storage engine open the row sets.

As the relational engine works through the steps of the execution plan and needs data, it uses OLE DB to fetch the individual rows from the row sets it asked the storage engine to open. The storage engine transfers the data from the data buffers to the relational engine.

The relational engine combines the data from the storage engine row sets into the final result set transmitted back to the user.
"
17 сен 03, 17:45    [343131]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить