我通过一个相当简单的EF 4.1代码优先模型创建了一个WCF数据服务。对于每个请求,我必须提供一个clientid来维护我的多租户数据库中的数据隔离。我看到了糟糕的性能,在运行sql server跟踪后,我发现所有参数化查询都使用了这样的子查询。
select top 100 <This is because of paging>
colA,
colB,
colC
from (select colA, colB, colC
from table
where clientid = 12345)
orderby .....
有没有办法调整它,以便它跳过选择的子查询?这似乎是荒谬的,并且令人惊讶的数量级减慢了性能。
感谢。
答案 0 :(得分:1)
有没有办法调整它以便它跳过select的子查询?
否,除非您要为MSSQL Server(或您正在使用的其他数据库)重写整个EF提供程序。
这似乎是荒谬的,并且令人惊讶的数量级减慢了性能。
您是否真的调查了性能问题的来源?您展示的查询应该由DB服务器上的查询优化器进行优化,并且不应对性能产生任何显着影响。
确保您已正确配置索引和最新数据统计信息。