【问题标题】:WCF Connection very slow - Is the WPF Client the issue or the SQL Query?WCF 连接非常慢 - WPF 客户端是问题还是 SQL 查询?
【发布时间】:2013-02-22 15:46:14
【问题描述】:

我有一个 SQL Server 数据库,其中包含 300.000 个数据行的表。主键和另一个键上有一个索引。我在我的独立 WCF 服务器中使用以下查询来使用 SQLConnection 和 SQLDataReader 获取数据。

SELECT * FROM Users WHERE UserTypeId = @UserTypeId ORDER BY Users.Id OFFSET    
@OFFSET ROWS FETCH NEXT @NUMBER ROWS ONLY

DataReader 返回的数据被推送到我自己的类/模型中,然后由 WCF 服务器的函数返回。

WPF 客户端连接到服务器并启动命令,并且只需要 500 个数据行。但是,此任务所需的时间约为 3-4 秒。 (没有提到所有数据的时间......)

然后将返回的 List 用作 WPF Datagrid 的 DataContext。

我的问题是,我可以检查什么或可能有什么问题。如果您需要更多信息、代码示例等。请告诉我!

【问题讨论】:

  • 您是否在 MS SQL 管理工作室中运行过查询?如果是这样,需要多长时间?如果运行缓慢,那么查询就是您的问题。否则,您可以使用 System.Diagnostics.Stopwatch 类来衡量代码的特定部分运行所需的时间。

标签: sql-server wpf performance wcf datagrid


【解决方案1】:

首先,不要使用select *,而是指定您想要从表中获取哪些字段。现在您正在获取您不需要的数据,例如您已经知道您获取的所有记录的 UserTypeId 字段。

然后您可以创建一个包含UserTypeIdId 的覆盖索引,并具有您希望从查询返回的任何其他字段作为包含字段。这样,数据库可以单独针对索引运行查询,而不必从实际表中读取任何内容。

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2011-07-07
    • 2020-01-20
    • 1970-01-01
    相关资源
    最近更新 更多