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

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

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

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


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