powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите правильно настроить ADOQuery
3 сообщений из 3, страница 1 из 1
Помогите правильно настроить ADOQuery
    #32014916
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

У меня выполняется запрос к MS SQL Server'у , в теле которого заключен некий алгоритм, смысл которого в следующем: отсортировать последовательность ID-ров, предложенную клиентским приложением, по соответствующему этим ID-рам текстовому полю таблицы в БД и выдать результат сортировки.
Получается один очень большой запрос.

Когда настройки компонента ADOQuery используют клиентский тип курсора :
\n AutoCalcFields = False
CursorLocation = clUseСlient
CursorType = ctStatic
MarshalOptions = moMarshalAll
ParamCheck = False

то все нормально и выполняется этот запрос за 13 секунд , но у меня есть подозрение, что его можно выполнить за меньшее время, если использовать серверный курсор :
\n AutoCalcFields = False
CursorLocation = clUseServer
CursorType = ctDynamic
MarshalOptions = moMarshalModifiedOnly
ParamCheck = False

Я использую MDAC2.6, DELPHI 6.0, MS SQL Server 2K.

Вопросы
1. Почему после открытия запроса при подобных настройках, ADOQuery.RecordCount = -1 ?
2. Будет ли быстрее производится обработка запроса, если изменить тип курсора на clUseServer ?

С уважением.
...
Рейтинг: 0 / 0
Помогите правильно настроить ADOQuery
    #32014921
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Именно потому, что стали использовать серверный курсор. В этом случае после выполнения запроса только сервер знает, сколько записей попало в recordset. Получить это значение можно, например, через дополнительный recordset
SELECT @@ROWCOUNT AS RecordCount

2. Однозначного ответа нет - все зависит от того, какими ресурсами(память,процессоры, диски) обладает ваш сервер, какими ресурсами обладает клиентская машина, сколько пользователей одновременно будут выполнять данный запрос, сколько записей(в среднем) содержит запрос, сколько пользователей вообще одновременно будут обращаться к серверу. Определенно можно сказать лишь то, что серверный курсор использует ресурсы сервера, а вот справиться ли ваш сервер с таким количеством курсоров - это другой вопрос.
...
Рейтинг: 0 / 0
Помогите правильно настроить ADOQuery
    #32014935
Клиентский курсор имеет отличия от серверного только после исполнения самого запроса, формирующего набор данных для курсора. Т.е. выполняется запрос, формируется набор данных, а уже потом открывается курсор (клиентский или серверный) по этому набору данных. Это в свою очередь значит, что указание типа курсора практически никак не может повлиять на скорость выполнения запроса.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите правильно настроить ADOQuery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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