Производительность прокручиваемого результирующего набора SQL Server / ODBC - PullRequest
0 голосов
/ 14 октября 2011

У меня есть приложение, подключающееся к базе данных SQL Server через ODBC, и обеспечивающее функциональность запросов через веб-интерфейс.Чтобы отобразить базу данных на нашу веб-среду, я использую прокручиваемый набор результатов.В большинстве остальных приложений используется курсор только для пересылки.

У меня есть таблица заказов с огромным количеством строк и запрос:

SELECT * FROM order

Если я запускаюэто с моей собственной программой командной строки, она сразу начинает возвращать данные.Если я получу только 25 строк, запрос выполняется очень быстро.Если я запускаю его на веб-экранах, запрос прерывается через 30 секунд, не возвращая никаких данных.

Оба метода выполняют одинаковую последовательность вызовов, за исключением типа курсора.В программе командной строки я использую SQLSetStmtAttr, чтобы установить SQL_ATTR_CURSOR_TYPE на SQL_CURSOR_FORWARD_ONLY, а в веб-версии я использую SQL_CURSOR_DYNAMIC.

Я пошел с отладчиком, чтобы выяснить,где задержка, и то, что я видел, это вызов SQLExecute, который занимает около 50 секунд с курсором, установленным на динамический.Для информации, я использовал SQL_CURSOR_STATIC раньше, и SQL_CURSOR_DYNAMIC - моя первая попытка исправить проблему.

Есть ли способ получить результативный прокручиваемый набор результатов в SQL Server через ODBC?

1 Ответ

1 голос
/ 14 октября 2011

Прокручиваемые курсоры - это серьезно, нет, нет, на сервере SQL независимо от того, какой API вы используете - и ODBC делает их более точными. Обойти их практически любой ценой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...