没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2014-07-10 09:46:42.000|阅读 316 次
概述: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外部键字和其他特点。
通过 HOOPS Luminate,TopSolid 的客户能在设计阶段就获得接近成品的视觉效果,缩短方案确认时间,提升成交效率。
随着应用跨平台需求的增加,测试环境的碎片化问题日益突出——设备、浏览器、操作系统版本的多样性使得测试覆盖率难以提升,同时本地维护测试环境的成本也急剧上升。借助SmartBear的两款产品——TestComplete与BitBar云,这些问题将迎刃而解。TestComplete作为一款强大的自动化GUI测试工具,结合BitBar云的跨平台测试能力,可以轻松实现多环境并行测试,显著提升测试效率与覆盖率
Sparx EA的三维功能体系构成了企业数字化转型的智能导航系统:可视化路线图提供方向指引,业务流程模拟实现路径优化,场景分析则保障行程安全。这套完整的方法论和工具组合,正在帮助越来越多的企业在数字化转型的复杂旅程中保持方向正确、执行有力、风险可控,最终实现战略目标。
该产品是数据库服务器系统的管理和开发工具。支持最新版本的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号