没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2014-07-10 09:46:42.000|阅读 291 次
概述:SQL数据库中查询语句随着查询的对象越来越多,出现语句臃肿将导致内存使用过多的情况!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
如果当SQL数据库中select语句数目过多,就会影响数据库的性能,如果需要查询n个Customer对象,那么必须执行n+1次select查询语句。在Session的 缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的Order对象。以 Customer和Order类为例,假定ORDERS表的CUSTOMER_ID外键允许为null,图1列出了CUSTOMERS表和ORDERS表中的记录。
以下Session的find()方法用于到数据库中检索所有的Customer对象:
List customerLists=session.find("from Customer as c");
运行以上find()方法时,Hibernate将先查询CUSTOMERS表中所有的记录,然后根据每条记录的ID,到ORDERS表中查询有参照关系的记录,Hibernate将依次执行以下select语句:
select * from CUSTOMERS;
select * from ORDERS where CUSTOMER_ID=1;
select * from ORDERS where CUSTOMER_ID=2;
select * from ORDERS where CUSTOMER_ID=3;
select * from ORDERS where CUSTOMER_ID=4;
select语句的数目太多,需要频繁的访问数据库,会影响检索性能。如果需要查询n个Customer对象,那么必须执行n+1次select查询语句。这就是经典的n+1次select查询问题。
通过以上5条select语句,Hibernate最后加载了4个Customer对象和5个Order对象,在内存中形成了一幅关联的对象图。
Hibernate在检索与Customer关联的Order对象时,使用了默认的立即检索策略。这种检索策略存在两大不足:
1、select语句的数目太多,需要频繁的访问数据库,会影响检索性能。如果需要查询n个Customer对象,那么必须执行n+1次select查询语 句。这就是经典的n+1次select查询问题。这种检索策略没有利用SQL的连接查询功能,例如以上5条select语句完全可以通过以下1条 select语句来完成:
select * from CUSTOMERS left outer join ORDERS
on CUSTOMERS.ID=ORDERS.CUSTOMER_ID
以上select语句使用了SQL的左外连接查询功能,能够在一条select语句中查询出CUSTOMERS表的所有记录,以及匹配的ORDERS表的记录。
2、在应用逻辑只需要访问Customer对象,而不需要访问Order对象的场合,加载Order对象完全是多余的操作,这些多余的Order对象白白浪费了许多内存空间。
倾情推荐EMSSoftware公司旗下SQL数据量管理工具来解决数据库各项问题。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
该产品是数据库服务器系统的管理和开发工具。支持最新版本的MySQL的特点,包括:查看、存储规程和函数、InnoDB外部键字和其他特点。
借助SpinFire Manage,企业可以真正实现对CAD数据的全生命周期可控与可视化管理,全面提升设计数据的可用性、共享性与安全性,为企业在激烈的制造业竞争中赢得更高效的协作能力和更可靠的数据支撑。
强大的.NET代码测试工具Parasoft dotTEST不仅提供丰富的内置规则,还支持Microsoft代码分析(MCA),进一步扩展检测能力。
Parasoft C/C++test通过TÜV认证免除额外工具认证,内置合规性检查包一键满足ISO 26262、DO-178B/C等标准,并统一测试平台解决多工具兼容性问题,显著提升开发效率与安全性。
那么,制造现场的数据是如何采集的?采集哪些数据?又是如何与MES系统打通的?本文带您全面解析。
该产品是数据库服务器系统的管理和开发工具。支持最新版本的MySQL的特点,包括:查看、存储规程和函数、InnoDB外部键字和其他特点。
EMS Data Export for MySQL该工具是一款交叉平台的数据库工具,可以快速将您的MySQL数据库导出为15种可用格式的文件。
Data Import for MySQL该工具用于快速将数据导入至您的MySQL表中,同时支持多种导入文件类型。
Data Pump for MySQL该工具用于转换数据库和在ADO连接的数据源中将数据表导入到MySQL数据库里。
Data Generator for MySQL该工具用于同时为多个MySQL数据库生成测试数据。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号