【发布时间】:2011-10-14 21:31:21
【问题描述】:
我有一个应用程序通过 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 中获得高性能的可滚动结果集?
【问题讨论】:
标签: sql-server odbc