`
cfan_haifeng
  • 浏览: 122421 次
  • 性别: 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))。


 

 

 

 

 

分享到:
评论

相关推荐

    数据库删除数据太慢

    3. **备份与恢复策略**:在进行大规模删除操作之前,确保有足够的备份和恢复策略,以应对可能出现的问题。 总之,提高数据库删除速度需要从多个角度出发,结合具体的应用场景和技术架构特点来进行综合考量。通过对...

    SQLITE数据库 UPDATE慢

    1. **索引缺失**:在执行UPDATE操作时,如果更新的列没有索引,数据库需要全表扫描来找到匹配的行,这在数据量大的情况下会非常慢。解决方案是为经常用于WHERE子句中的列创建索引,以提高查找效率。 2. **大数据量*...

    如何判断数据库IO是否慢

    ### 如何判断数据库IO是否慢 #### 引言 本月远程支持的一个项目中出现了数据库响应缓慢的问题,最终发现这是由于操作系统层面的IO性能不佳所致。为了确保解释充分、具有说服力,本文将深入探讨如何利用Oracle自带...

    Oracle数据库慢分析

    例如,可以通过SQL执行时间、等待事件统计等来确定哪些操作导致了慢数据库问题。 #### 确定原因 在完成以上步骤之后,下一步是确定具体的性能问题类型以及选择合适的调优策略。这通常涉及到以下步骤: **收集扩展...

    数据库文件\数据库查询慢优化方法

    数据库查询慢的问题是许多系统性能瓶颈的根源,尤其是在大数据量和高并发的环境中。以下是对标题和描述中提到的知识点的详细解释以及优化查询的方法: 1. **索引的使用**:索引是提高查询效率的关键。如果没有索引...

    解决金碟数据库卡慢,让金碟加速

    通过以上操作,用户可以有效地解决金碟数据库卡慢的问题,并通过系统性的优化方法提升数据库的整体性能。这些操作的实施需要具备一定的数据库管理知识和操作权限,并且在执行之前应该确保备份数据,防止不可预见的...

    sql server 2000 数据库操作视频(全)

    本套"SQL Server 2000 数据库操作视频(全)"涵盖了该系统的各个方面,旨在帮助学习者掌握全面的SQL Server 2000操作技能。 一、SQL Server 2000的核心概念 1. 数据库引擎:负责处理SQL语句,管理数据存储和检索。 ...

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

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

    VB操作ACCESS数据库实例,Access数据库同步。

    如果数据量大,同步过程可能较慢,可以考虑使用批处理操作,一次性处理多个记录,而不是一条一条处理,以提高效率。 8. **安全性和数据一致性**: 在进行数据同步时,需确保数据的一致性,避免在同步过程中出现...

    数据库慢与卡解决思路

    ### 数据库慢与卡解决思路 #### 一、引言 在现代企业的信息化建设中,数据库作为核心的数据存储与管理工具扮演着至关重要的角色。然而,在实际应用过程中,经常会遇到数据库响应缓慢或卡顿的问题,这不仅会影响...

    究竟先操作缓存,还是数据库

    ### 缓存与数据库操作顺序探讨 在现代软件架构中,缓存技术作为一种重要的优化手段,被广泛应用于提高系统的响应速度和吞吐量。本文将深入探讨“究竟先操作缓存,还是数据库”的问题,并结合具体场景分析不同操作...

    数据库操作软件(公司使用)

    标题中的“数据库操作软件(公司使用)”暗示我们讨论的是一个专为商业环境设计的数据库管理工具。在企业环境中,数据库管理系统(DBMS)扮演着至关重要的角色,用于存储、管理和检索数据。这类软件通常需要提供高效...

    oracle数据库常用操作指令

    在操作大表或涉及大量记录时,应该考虑分段、分批执行,或者使用特定的优化技巧来避免程序响应过慢甚至失去响应。 Oracle数据库常用的字段类型包括CHAR、VARCHAR2、NUMBER、DATE等。CHAR类型是固定长度的字符串,而...

    Delphi几种数据库连接

    Delphi也支持ORM工具,如dBugX、ORMate等,它们可以将数据库表映射为对象,简化数据库操作。ORM使得开发者可以使用面向对象的方式来处理数据库,提高开发效率。 在实际项目中,选择哪种数据库连接方式取决于项目的...

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

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

    查询分析工具通用数据库操作工具

    "查询分析工具通用数据库操作工具"是一种专为数据库管理和查询设计的实用软件,它允许用户通过SQL(结构化查询语言)来执行各种数据库操作。SQL是数据库管理员、开发人员和数据分析师的主要语言,用于检索、更新、...

    基础数据库学习

    11. 日志系统:理解MySQL的慢查询日志、二进制日志、InnoDB引擎日志和MySQL的其他日志有助于数据库故障恢复和性能监控。 12. 备份与恢复:数据库备份是防止数据丢失的重要措施。了解MySQL自带工具的使用,以及如何...

    ORACLE数据库巡检模板

    - **表空间**:监测表空间的使用情况,防止空间不足影响数据库操作。 - **回滚段管理**:优化回滚段配置,确保事务回滚的效率和数据一致性。 在进行数据库巡检时,还应考虑SQL语句的执行效率、索引的有效性、备份...

    华师大公共数据库精选.doc

    华师大公共数据库的优点有很多,例如丰富的信息资源、高速的访问速度、安全的连接方式等。华师大公共数据库为学生、教师和staff提供了一个便捷的信息获取平台,提高了工作和学习的效率。 在使用华师大公共数据库时...

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

    例如,对于ATM监控,可以实时检测并记录各种异常交易,如单笔金额上限、交易金额累计上限、卡交易笔数累计上限等,而不会因为频繁的数据库操作而导致性能下降或数据丢失。 总之,h2database作为Java内存数据库,...

Global site tag (gtag.js) - Google Analytics