数据库操作中读操作比写操作慢的原因及解决
来源:互联网 发布:ubuntu如何切换中文 编辑:程序博客网 时间:2024/06/05 02:56
一个现象:使用derby数据库时,用java编程把数据写入,每组数据写入时间平均是2小时;然后用查询语句读每组数据,全部读出来的时间平均是20小时。
这与我们的常识相违背。我们的常识是:读数据比写数据快,而不是慢。而这一现象与此正好相反。
分析原因:首先使用的查询语句是:
select * from A where b_id in (select id from B where c_id in (select id from C where d_id in(select id from D where e_id=8)));
观察该查询语句,猜测查询较慢可能是由于select嵌套较多导致的,其原因可能是每次在A中读一条数据时,都要执行后面所嵌套的select!这样做的原因是后续select结果可能会动态变化!
解决:把后续的select的结果求得,而不使用select嵌套,即改为如下语句:
select * from A where b_id=7;
结果:查询时间变为40分钟,效率比采用select嵌套提高了20*60/40=30倍!
结论:在查询语句中使用确定的值,比使用嵌套要快提多。能够不使用select嵌套就不要使用。数据库的设计者们可能出于对数据动态变化的考虑,在对每行记录处理时,会对select嵌套执行一次,这也许是数据库读比写要慢的原因。
0 0
- 数据库操作中读操作比写操作慢的原因及解决
- 解决redmine写操作很慢的问题
- 解决redmine写操作很慢的问题
- zfs的块设备写操作很慢的原因分析
- 关于Android中内容操作数据库失败的原因及修改方法
- 数据库操作时,速度慢的解决方案
- citrix:xencenter同步链接xenserver及后续操作非常慢的一个可能原因
- mysql sending data的状态导致数据库很慢及无法DDL 操作
- NTFS硬盘第一次写操作很慢
- delphi中对数据库操作的问题与解决
- 数据库并发操作会带来哪些问题及原因
- 解决map集合数据过多get操作慢的问题
- C#写的数据库操作类
- 仿Petshop写的数据库操作类
- C#写的数据库操作类!
- 我写的数据库操作类DBUtil
- Xcode项目横竖屏切换控件元素无法响应用户操作的原因及解决
- 数据库中图片的操作
- node.js使用cheerio制作网络爬虫
- Linux环境下搭建DeepNet深度学习框架
- 常量与变量
- 使用PL/SQL做oracle数据库的备份方法
- Android源码分析—属性动画的工作原理
- 数据库操作中读操作比写操作慢的原因及解决
- numpy-flatten()
- 100个经典算法
- iOS一些面试题
- WCF-入门理解
- SpannableString的四种常用方式
- 比 大小
- Win32程序入口函数
- build.gradle文件常用技巧