惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
G
GRAHAM CLULEY
S
Securelist
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Spread Privacy
Spread Privacy
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
博客园_首页
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
O
OpenAI News
J
Java Code Geeks
T
Tenable Blog
K
Kaspersky official blog
AWS News Blog
AWS News Blog
S
Security @ Cisco Blogs
The GitHub Blog
The GitHub Blog
T
Threatpost
月光博客
月光博客
H
Heimdal Security Blog
Security Latest
Security Latest
The Hacker News
The Hacker News
Y
Y Combinator Blog
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
C
Cisco Blogs
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
D
Docker
Google Online Security Blog
Google Online Security Blog
D
DataBreaches.Net
V
Visual Studio Blog
H
Help Net Security

博客园 - 溶入海洋中的雨滴

case when遇上null值 【转】C#正则表达式整理备忘 【摘】UI设计中对比色颜色的选取 JavaScript中的正则表达式解析 JavaScript正则表达式exec和test方法实例! - 溶入海洋中的雨滴 - 博客园 用js实现用回车键、ctrl键在文本框导航 [原]无刷新三级连动用户控件 c#批量插入数据到数据库【支持事务操作】 SQL:定时作业的设置方法 【转】c#用柱形图、折线图和饼形图展示数据 【原】css设置布局时,尽量天上背景色 【原】JS控制控件的显示,你选择display还是visibilty 【原】js实现2个listbox的乾坤大挪移 [转]数据库设计14个技巧 【转】sql查询性能调试,用SET STATISTICS IO和SET STATISTICS TIME 【原】winform定制datagrid模板 【原】winform高效导出Excel带格式设置 【原】让3层下的objectDatasource,支持griedview不写代码具备编辑功能 推荐一个可以下.net电子书的论坛
ADO Entities Framework不对多表查询进行优化?
溶入海洋中的雨滴 · 2009-12-22 · via 博客园 - 溶入海洋中的雨滴

项目中用ADO Entities  Framework来作为数据库表和实体的映射框架,对单表到3个关联表的增、删、改和查询操作,不用再用代码生成器去生成实体类和数据库操作类,简单逻辑功能实现起来,几乎不用写sql语句、存储过程,感觉开发起来提高了不少效率。但是有个跨多达6个表进行查询的,平均每个表的记录不到2000条,分页查询时,在进行统计满足条件的记录数时,就死在那了,直至net报数据库执行超时。对比存储过程实现同等功能的执行效率,怀疑entities  framework进行跨多表查询效率不行,用来做单表或跨2个表的操作还可以,跨多表操作建议还是用回存储过程吧。 

代码如下:

int count = 0;using (var context = new DBEntities(DateCommand.ConnectionString))
            {

                var result 

= from inner in context.InnerJoin
                             join ph 
in context.PathologyHead on inner.PathologyHeadID equals ph.ID
                             join pt 
in context.PathologyHeadDetailTestItem on inner.PathologyHeadDetailTestItemID equals pt.ID
                             join sp 
in context.Specimen on inner.SpecimenID equals sp.ID                   
                             join r 
in context.Receive on inner.ReceiveID equals r.ID
                             select sp.SpecimenNumber;
if (result.Count() > 0)
                {

                    count 

= result.Count();
                }
            }
            
return count;

以上逻辑我改用sql2005通用存储过程分页来实现,同时在InnerJoin表增加插入10W条记录,测试发现按每页取10条记录计,执行前都清空db数据缓存和编译缓存,执行10次,cpu执行时间没有超过4S的,页面执行时的反应速度只第一次要4-6S左右,之后都是2、3s就可以显示记录。
        网上对entities  framework的多表查询方面资料很少,msdn也没发现对此种问题的说明,留档做一记录,entities  framework用来做单表或跨2个表的操作还行,跨多表操作还是用回存储过程。