知识大全 Oracle千万条记录插入与查询小结

Posted 数据库

篇首语:愿君学长松,慎勿作桃李。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle千万条记录插入与查询小结相关的知识,希望对你有一定的参考价值。

Oracle千万条记录插入与查询小结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近做了个项目 实现对存在千万条记录的库表进行插入 查询操作 原以为对数据库的插入 查询是件很容易的事 可不知当数据达到百万甚至千万条级别的时候 这一切似乎变得相当困难 几经折腾 总算完成了任务

   避免使用Hibernate框架

  Hibernate用起来虽然方便 但对于海量数据的操作显得力不从心

  关于插入

  试过用Hibernate一次性进行 万条左右数据的插入 若ID使用sequence方式生成 Hibernate将分 万次从数据库取得 万个sequence 构造成相应对象后 再分五万次将数据保存到数据库 花了我十分钟时间 主要的时间不是花在插入上 而是花在 万次从数据库取sequence上 弄得我相当郁闷 虽然后来把ID生成方式改成increase解决了问题 但还是对那十分钟的等待心有余悸

  关于查询

  Hibernate对数据库查询的主要思想还是面向对象的 这将使许多我们不需要查询的数据占用了大量的系统资源(包括数据库资源和本地资源) 由于对Hibernate的偏爱 本着不抛弃 不放弃的作风 做了包括配SQL 改进SQL等等的相当多的尝试 可都以失败告终 不得不忍痛割爱了

   写查询语句时 要把查询的字段一一列出

  查询时不要使用类似select * from x_table的语句 要尽量使用select id name from x_table 以避免查询出不需要的数据浪费资源 对于海量数据而言 一个字段所占用的资源和查询时间是相当可观的

   减少不必要的查询条件

  当我们在做查询时 常常是前台提交一个查询表单到后台 后台解析这个表单 而后进行查询操作 在我们解析表单时 为了方便起见 常常喜欢将一些不需要查询的条件用永真的条件来代替(如 select count(id) from x_table where name like % ) 其实这样的SQL对资源的浪费是相当可怕的 我试过对于同样的近一千万条记录的查询来说 使用select count(id) from x_table 进行表查询需要 秒 而使用select count(id) from x_table where name like % 却花了 秒

   避免在查询时使用表连接

  在做海量数据查询时 应尽量避免表连接(特别是左 右连接) 万不得已要进行表连接时 被连接的另一张表数据量一定不能太大 若连接的另一张表也是数万条的话 那估计可以考虑重新设计库表了 因为那需要等待的时间决不是正常用户所能忍受的

   嵌套查询时 尽可能地在第一次select就把查询范围缩到最小

  在有多个select嵌套查询的时候 应尽量在最内层就把所要查询的范围缩到最小 能分页的先分页 很多时候 就是这样简单地把分页放到内层查询里 对查询效率来说能形成质的变化

cha138/Article/program/Oracle/201311/17394

相关参考

知识大全 Oracle循环向数据库中插入记录

Oracle循环向数据库中插入记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  declare

知识大全 oracle多表查询与子查询

  (一)子查询select*fromtableA  whereidoperator(select*fromtableAawhereaid=)  operaor  单条记录子查询(

知识大全 oracle查询数据并同时修改状态

  有一个表中的数据需要每月更新数据量近百万考虑由台服务器分摊并分批进行更新  这就需要能够查询一批记录并同时修改这批记录的更新状态以免被正在更新的数据被其他服务器取到  加行级锁查询到记录后再遍历结

知识大全 oracle中利用merge语句防止重复插入

  由于项目中需要用到批量插入为了防止用户插入重复的数据需要先判断插入的数据是不是已经存在如果存在则忽略这次插入否则插入这条数据刚开始的时候是先用一条SQL语句判断如果返回结果是真(记录已经存在)则忽

知识大全 临时表更适合做插入和查询操作

  ORACLE数据库除了可以保存永久表外还可以建立临时表temporarytables这些临时表用来保存一个会话SESSION的数据或者保存在一个事务中需要的数据当会话退出或者用户提交mit和回滚r

知识大全 用SQL测试具有百万条记录的数据库

用SQL测试具有百万条记录的数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果没有现实的

知识大全 oracle中merge的简单使用

  merge在oracle用以从另一张表中取数据插入到一张表中如果两张表中记录符合某些条件则替换如果不符合则插入下面的例子是把mergetest中记录更新到newmergetest如果两张表的id相

知识大全 oracle如何返回指定行数之间的查询结果

  如何返回指定行数之间的查询结果以实现web记录分页在Oracle中有许多的方法这里仅仅列出了种希望能对大家有所帮助大家可以根据不同需要选择下面的script     )selectwhererow

知识大全 技术分享 小结Hibernate的查询方式

技术分享小结Hibernate的查询方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  get(

知识大全 oracle锁的管理practiced

  今天参考了一些文档作了以下一点实验记录了整个过程留个记录吧  一插入时锁的情况  打开一个命令行窗口用sqlplus登陆到oracle  c[oracle@qatest~]$sqlplusfort