【问题标题】:SQL Server / ODBC scrollable result set performanceSQL Server / ODBC 可滚动结果集性能
【发布时间】:2011-10-14 21:31:21
【问题描述】:

我有一个应用程序通过 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 中获得高性能的可滚动结果集?

【问题讨论】:

    标签: sql-server odbc


    【解决方案1】:

    无论您使用什么 API,可滚动游标在 sql server 上都是不可取的——而 ODBC 使它们变得更加复杂。不惜一切代价绕过它们。

    【讨论】:

    • 问题是界面的某些功能需要返回之前的行号。删除或重新设计这些功能将是相当大的重新设计 - 该界面并不是真正为 SQL Server 设计的。
    猜你喜欢
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多