我有一个应用程序通过ODBC连接到SQL Server数据库,并通过Web界面提供查询功能。为了将数据库映射到我们的Web框架,我使用了一个可滚动的结果集。应用程序的其余大部分都使用只向前游标。
我有一个包含大量行的订单表和一个查询:
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
是我第一次尝试解决此问题。
有没有办法通过ODBC在SQL Server中获得高性能的可滚动结果集?
答案 0 :(得分:1)