我希望从表A中获取包含id
,dept
,course
,created_date
列的详细信息以及存储了与表B的外键关系的约35列过程
最后,我想通过只检查" id"来提取数据。在表A中应该可以作为列#34; userid"和另一列有空或“否”的列在表格中" B"。
表B共有220列。
通过
获取数据查询#1
Select *
from A
where Exists (select userid from B where charge = 'no')
and created_date >= '2015-01-01'
and created_date <= '2016-01-01'
查询#2
Select *
from A aa
left join B bb on bb.userid = aa.id
and charge = 'no'
where
aa.created_date >= '2015-01-01'
and aa.created_date <= '2016-01-01'.
实际上表现太慢了。
观察:
如果我在SQL Server存储过程中使用硬编码值执行日期,则通过拉出属于6个月的6000条记录来快速返回数据
同样,如果我在同一个存储过程中使用动态参数执行,它返回的速度非常慢(在Amazon服务器本身中占用45秒)
我尝试使用实体linq面临同样的问题。
此外,我也希望以非常快速有效的方式获取数据。我正在使用ASP.NET MVC 4 Web应用程序并从服务方法执行存储过程以获取数据列表并将其绑定到网格。
请帮助找到它。
答案 0 :(得分:0)
当您尝试使用Entity时,您是否采取了任何措施加快实施速度?喜欢AsNoTracking()?在某些情况下,可以加快数据的检索速度。无论如何都要限制你拉回的列数量?我会限制列并为每个列添加昵称或缩短的列别名。这应该有所帮助。
答案 1 :(得分:0)
这充满了问题。
纠正其中一些问题,然后重试。