我有一个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秒。(未提及所有数据的时间...)
然后,将返回的列表用作WPF Datagrid的DataContext。
我的问题是,我可以检查什么,或者什么可能是错误的。如果您需要更多信息,CodeSamples等,请让我知道!
发布于 2013-02-22 23:58:09
首先,不要使用select *,而是指定您希望从表中获得的字段。现在,您获得了不需要的数据,例如,您已经知道的所有记录的UserTypeId字段。
然后,您可以创建一个包含UserTypeId和Id的覆盖索引,并将您希望从查询中返回的任何其他字段作为包含字段。这样,数据库就可以单独对索引运行查询,而不必从实际的表中读取任何内容。
https://stackoverflow.com/questions/15027909
复制相似问题