我有一个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。
我的问题是,我可以检查什么或可能出错。如果您需要更多信息,CodeSamples等。请告诉我!
答案 0 :(得分:0)
首先,不要使用select *
,而是从表格中指定您想要的字段。现在您将获得不需要的数据,例如您已知道所有记录的UserTypeId
字段。
然后,您可以创建包含UserTypeId
和Id
的覆盖索引,并且您希望从查询中返回包含字段的任何其他字段。这样,数据库就可以单独对索引运行查询,而不必从实际表中读取任何内容。