没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2014-07-10 09:46:42.000|阅读 294 次
概述: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@ipmdipw.cn
该产品是数据库服务器系统的管理和开发工具。支持最新版本的MySQL的特点,包括:查看、存储规程和函数、InnoDB外部键字和其他特点。
Parasoft Virtualize是一款虚拟化测试工具,帮助汽车企业通过模拟ECU、CAN总线、传感器等组件,替代传统路测,降低成本和周期。它支持REST API快速部署虚拟服务,集成CI/CD提升效率,并满足ISO 26262等合规要求。此外,该工具也适用于金融、医疗、航空等行业,确保系统稳定性和安全性。
TestComplete助力美国某州政府机构提升40+关键应用的测试效率,解决手工测试效率低、覆盖不全等问题。其操作简便,支持多种脚本语言和旧版应用程序,并能无缝集成持续交付流程。该工具还在金融、制造、医疗等行业广泛应用,显著提升测试效率和质量。
CEETRON Envision专为CAE数据工作打造,能够显著简化大规模模拟后处理的可视化开发流程,是搭建桌面与云端CAE平台的理想之选。
微服务架构凭借灵活和可扩展的优势越来越普及,但随之而来的变更也成了开发团队的“心头大患”。服务之间依赖复杂,接口改来改去,不仅让开发更费劲,还容易导致测试用例失效、测试效率下降,甚至埋下系统不稳的隐患。自动化测试利器Parasoft SOAtest精准捕捉接口变更、秒级识别波及范围、自动迁移测试资产,让变更引发的测试混乱与风险,从此快、准、稳地一键修复。
该产品是数据库服务器系统的管理和开发工具。支持最新版本的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@ipmdipw.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢