SQL Server / ODBC可滚动结果集性能

时间:2011-10-14 13:06:06

标签: sql-server odbc

我有一个应用程序通过ODBC连接到SQL Server数据库,并通过Web界面提供查询功能。为了将数据库映射到我们的Web框架,我使用了一个可滚动的结果集。应用程序的其余大部分都使用只向前游标。

我有一个包含大量行的订单表和一个查询:

SELECT * FROM order

如果我使用自己的命令行程序运行它,它会立即开始返回数据。如果我只获取25行,则查询运行得非常快。如果我在网页屏幕上运行它,查询会在30秒后超时,而不会返回任何数据。

除游标类型外,两种方法都经历相同的调用序列。在命令行程序中,我使用SQLSetStmtAttrSQL_ATTR_CURSOR_TYPE设置为SQL_CURSOR_FORWARD_ONLY,而在网络版中,我使用SQL_CURSOR_DYNAMIC

我已经使用调试器找出延迟的位置,而我所看到的是SQLExecute调用大约需要50秒,并且光标设置为动态。有关信息,之前我使用的是SQL_CURSOR_STATICSQL_CURSOR_DYNAMIC是我第一次尝试解决此问题。

有没有办法通过ODBC在SQL Server中获得高性能的可滚动结果集?

1 个答案:

答案 0 :(得分:1)

无论你使用什么API,可滚动游标在sql服务器上都是不可否认的 - 而且ODBC使得它们更加简洁。几乎不惜一切代价绕过他们。