2012-01-06 144 views
0

我已经通过一个相当简单的EF 4.1代码优先模型创建了一个WCF数据服务。对于每个请求,我必须提供一个维护数据以维护我的多租户分区中的数据分隔。我看到可怕的表现,并在运行sql服务器跟踪后,我看到所有的参数化查询都像使用子查询那样。EF代码优先的子查询4.1

select top 100 <This is because of paging> 
colA, 
colB, 
colC 
from (select colA, colB, colC 
     from table 
     where clientid = 12345) 
orderby ..... 

有什么办法来调整这个,以便它跳过select的子查询吗?这看起来荒谬不必要,并以惊人的数量级降低了性能。

谢谢。

+0

可能需要索引?尝试在SSMS中运行相同的查询,看看它是否推荐任何索引。 – 2012-01-06 15:26:01

+0

小心发布相关的LINQ查询? – 2012-01-06 15:26:31

回答

1

有什么办法来调整这个,以便它跳过select的子查询吗?

否,除非您要为MSSQL Server(或您正在使用的其他数据库)重写整个EF提供程序。

这看起来很荒谬不必要,并且将性能降低了一个惊人的数量级。

您是否确实调查过性能问题的来源?您显示的查询应该通过DB服务器上的查询优化器进行优化,并且不应该对性能产生重大影响。

确保您已正确配置索引和最新数据统计信息。

+0

谢谢,那就是我所害怕的。我毫不怀疑索引可能存在问题。然而,我反对的桌子目前在3.5tb附近,每个人都不敢碰它。不过,我会研究影响。 – RockyMountainHigh 2012-01-06 17:03:27