`
cfan_haifeng
  • 浏览: 120076 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

数据库操作有多慢

阅读更多

   “数据库操作很慢”,“尽量避免数据库操作”这些话已经早已深入我心,但可笑的是从未实验过。现在恰巧哟这么个机会,简单的实验一下吧

 

    现在有一张表,有25字段,只有ID有索引(主键),该表存储了20488条数据,导出的sql有11.1M。

 

    项目中的是struts2+spring+ibatis,赖的费事,就直接在service中以并发1的情况下比较了一下速度(耗时)。

 

 

实验1

 

查询1:利用"where 1 = 1 and  P_ID=?   "去查询(其中P_ID没有索引)

测试结果:直接查询数据库用时47ms(32,699,268ns),获取数据89条。

 

 

 

 

查询2:

a.首先把2万条数据都查出来放到ArrayList中(不计算在时间内)

b.for循环ArrayList并对比P_ID

测试结果:FOR循环 20488条数据用时0ms(7,086,888ns),获取数据89条。(呵呵,(System.currentTimeMillis() - start)已经满足不了我们的需求了)

 

 

实验1结果:

此种情况下查询2比查询1快了(32,699,268/7,086,888)=4.6倍。

 

 

 

 

 

实验2

 

查询1:利用"where 1 = 1 and  ID=?   "去查询(其中ID是主键

查询1测试结果:直接查询数据库用时11,589,130ns,获取数据1条。

 

查询2:仍旧采用遍历ArrayList,对比ID方式

查询2测试结果:for循环 20,488条数据用时2,456,200ns,获取数据1条。

 

 

实验2结果:

此种情况下查询2比查询1快了( 11,589,130 /  2,456,200)=4.7倍。

 

 

 

结论:

1.for循环方式比直接查找数据库快了4.5倍以上,与是否有主键差别不大。

 

疑问:

1.“查询2测试结果”和“查询2测试结果”同时:for循环 20488次,但耗时尽然差了(7086888/2456200)=2.8853057568601908倍,很是不解。即使去除for中间的tempList.add(o);也是如此。

很奇怪啊if (o.getID().equals(pid))明显快于if (o.getP_ID().equals(pid))。


 

 

 

 

 

分享到:
评论

相关推荐

    操作数据库 iBATIS查询

    操作数据库 iBATIS查询,java 和spring的配置方法

    SQLITE数据库 UPDATE慢

    SQLITE数据库 UPDATE慢,此为一个实例,供大家!

    SQL Server数据库查询速度慢原因及优化方法

    【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有...

    EDB数据库,MDB数据库,mysql数据库记账软件

    3.易语言自带的EDB数据库属于单个表的数据库,大家看源码可以看到这东西真简单,说白了就是玩具,比如有多个表就得写出多个数据库,这玩意在支持多表的功能上有待加强。速度上我感觉确实不错。建议的话是写软件本地...

    使用JAVA内存数据库h2database性能优化

    1.系统在不断实时地访问数据库时,一秒钟对同一个表操作几千,几万次以上,导致数据表死锁或则处理太慢; 2.对数据实时计算,而且数据量很大时,比如电信系统的电信的二次批价和实时累账 3. 需实时统计数据,监控...

    什么是NoSQL数据库?

    当时的关系型数据库由于硬件性能低劣、处理速度过慢而迟迟没有得到实际应用。但之后随着硬件性能的提升,加之使用简单、性能优越等优点,关系型数据库得到了广泛的应用。 通用性及高性能 虽然本书是讲解NoSQL数据库...

    在IDEA中通过MyBatis框架访问达梦数据库

    通过例子,介绍通过MyBatis访问达梦数据库,及各种关联查询,包括一对一、一对多、及多对多的关联关系的持久化类、Mapper、接口和测试。

    数据库设计与优化.pdf

    1.3.6 数据库物理存储和环境的设计 在设计阶段,可以对数据库的物理存储、操作系统环境、网络环境进行必要的设计,使得我们的系统在将来能适应比 较多的用户并发和比较大的数据量。 这里需要注意文件组的作用,适用...

    数据库编程工具 for vs05 08 2010

    主要功能:支持Access数据库、SQL SERVER数据库的操作,如打开数据库,打开表和视图,支持读取、增加、修改操作。更重要的是支持代码自动生成,支持DataSet语句、SSQL语句生成,内嵌代码模块、RCR类代码、进制转换...

    数据库工程师常见面技巧

    答:group by 和 order by 操作通常需要创建一个临时表来处理查询的结果,所以如果查询结果很多的 话会严重影响性能。 问题 2:delete、truncate 和 drop 的区别? 答:Delete 命令用来删除表的全部或者一部分数据行...

    postgresql数据库安装配置+基本操作.docx

    postgresql提供了两种可选模式,一种模式保证如果操作系统或硬件崩溃,则数据将保存到磁盘中,这种模式比大多数商用数据库慢,因为它使用刷新(或同步)方法;另一种模式与第一种不同,它不提供数据保证,但它比...

    5.4空间数据库管理系统.pdf

    将图形数据的变长部分处理成二进制块BLOB字段 大部分关系数据库管理系统都提供了二进制块的字段域 基本思想: 省去了前面所述的大量关系连接操作 二进制块的读写效率要比定长的属性字段慢得多,特别是涉及对象 的...

    MYSQL数据库优化秘籍

    MYSQL数据库优化秘籍,大牛出的,值得你反复研读 MySQL在Linux环境下的安装 文件引擎MyISAM与InnoDB比较 LOAD DATA INFILE/mysqldump DBA的分析命令 MySQL的系统配置参数、诊断操作系统的状态 MySQL的分库分表,分区...

    Java向数据库中插入大量数据时的优化

    Java向数据库中插入大量数据时的优化

    MySQL数据库服务器逐渐变慢分析与解决方法分享

    一、检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正...

    Oracle DBA优化数据库性能心得体会

    很多的时侯,做Oracle DBA的我们,当应用管理员向我们通告现在应用很慢、数据库很慢的时侯,我们到数据库时做几个示例的Select也发现同样的问题时,有些时侯我们会无从下手,因为我们认为数据库的各种命种率都是满足...

    Oracle日常维护故障定位故障排除

    6由于未对特大表(达到或超过100万条记录)定期做表分析导致数据库操作特别慢 7由于空间不够导致插入数据时扩展索引失败 8由于REDOLOG破坏导致数据库异常 9由于控制文件被破坏导致数据库无法正常启动 10由于数据文件...

    数据库相关的知识点!

    有索引的时候:创建索引的本质就是创造额外的文件,查询时先去额外的文件找,定好位置,再去原始表直接查询,提高查询速度,但是增删改的速度依然慢,创建索引后必须命中索引才有效 索引的分类 1、普通索引:加速...

    从access数据库读取数据写入xsl

    从access数据库读取写入xls表格,可以借鉴参考,对xls操作和access读写有学习借鉴的地方,写xls有几种方法,我的是一张表全部封装为一个range一次写入,速度很快,如果一个单元格一个单元格的写的话非常慢。

Global site tag (gtag.js) - Google Analytics