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

推荐订阅源

S
Schneier on Security
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
D
DataBreaches.Net
F
Full Disclosure
腾讯CDC
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
J
Java Code Geeks
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy International News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
O
OpenAI News
Project Zero
Project Zero
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Application and Cybersecurity Blog
Application and Cybersecurity Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
Schneier on Security
Schneier on 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个表的操作还行,跨多表操作还是用回存储过程。