0

我有一个包含 300.000 个数据行的表的 SQL Server 数据库。主键和另一个键上有一个索引。我在我的独立 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。

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

4

1 回答 1

0

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

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

于 2013-02-22T15:58:08.963 回答