powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по производительности
7 сообщений из 7, страница 1 из 1
Вопрос по производительности
    #32024123
Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим есть какой-то SELECT, насколько время выполнения обычной выборки
быстрее создания курсора основанного на том же SELECTе (курсор STATIC READ ONLY),
а также будет ли большая разница если в курсор попало 100 строк или 0 строк?
...
Рейтинг: 0 / 0
Вопрос по производительности
    #32024149
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты сам подумай, что такое "обычная выборка"?
Если ты этой "обычной выборкой" хочешь получить данные на клиенте, то курсор у тебя будет всё равно, на клиенте ли или на сервере, всё равно - клиенты не умеют работать с наборами данных. Они их обрабатывают последовательно.
Если же ты SELECTом подаёшь данные в другой DML statement, то производительность будет отличаться в разы, потому что как раз SELECT - это set-oriented оператор.
...
Рейтинг: 0 / 0
Вопрос по производительности
    #32024156
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю что речь идёт не о клиентской части

Если нет явной необходимости, курсорами лучше не пользоваться
...
Рейтинг: 0 / 0
Вопрос по производительности
    #32024171
Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточнение вопроса:
SELECT выполняется внутри ХП, если @@ROWCOUNT>0 - то нужно
пройти по записям и выполнить определенные действия (для чего
насколько я понимаю мне нужен курсор). Но дело в том, что
чаще всего @@ROWCOUNT=0. Имеет ли смысл сначала делать просто
SELECT и только если @@ROWCOUNT>0 создавать курсор, или открывать курсор в любом случае?
...
Рейтинг: 0 / 0
Вопрос по производительности
    #32024225
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно пройти по записям и выполнить определенные действия (для чего насколько я понимаю мне нужен курсор).
Не факт, что для позаписной обработки нужен именно курсор. В этом я согласен с SergSuper - лучше избегать их использоавания.

Если же все-таки без курсора никак не обойтись, то, конечно, нет смысла сначала выполнять запрос только для подсчета количества записей, а затем открывать курсор на основе такого же запроса.
Тем более при таком методе подсчета: @@ROWCOUNT vs COUNT(*).
Тем более что содержимое таблицы, используемой в запросе и курсоре, может измениться в промежуток времни между первым и вторым

ЗЫ
IMHO если уж вы открываете курсор как READ ONLY, то почему бы не использовать FORWARD_ONLY или FAST_FORWARD.
...
Рейтинг: 0 / 0
Вопрос по производительности
    #32024231
Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Glory Если можно, поподробнее - как сделать позаписную обработку без использования курсора?
...
Рейтинг: 0 / 0
Вопрос по производительности
    #32024235
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последовательность SELECT/UPDATE/DELETE. Ну или на крайний случай UDF в SQL2000
Для более конкретного ответа нужно больше информации о задаче
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по производительности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]