`

海量数据查询快速估计总数方法

阅读更多
估算大概值可以分析执行计划信息
sql:
EXPLAIN PLAN FOR
select * 
from xx t where 1=1  
and  date1 >= to_date('2011-12-09 00:00:15','yyyy-MM-dd hh24:mi:ss')
and   date2 <= to_date('2011-12-19 00:00:40','yyyy-MM-dd hh24:mi:ss');

select * from table(DBMS_XPLAN.DISPLAY);



***********************************************************************

java方法:

/**
*
* 快速估算大约总记录数
* @param 查询sql
* @return 大约总数记录数
*/
public int getComputeTotal(String sql) {
Statement st = null;
ResultSet reset = null;
int computeTotal=0;
try {
String sqlexplan = "EXPLAIN PLAN FOR "+sql;
Connection newconnect = getConnection(true);
st = newconnect.createStatement();
        st.execute(sqlexplan);
st = newconnect.createStatement();
reset = st.executeQuery("select t.plan_table_output from table(DBMS_XPLAN.DISPLAY) t");
String rowString="";
int i=0;
while (reset.next()) {
if(i==5){
rowString=reset.getString("plan_table_output");
break;
}
i++;
}
if(rowString!=null&&!"".equals(rowString)){
rowString=rowString.replaceAll(" ", "");
String rows[]=rowString.split("\\|");
if(rows[4].endsWith("K")){
rows[4]=rows[4].substring(0, rows[4].length()-1);
computeTotal=Integer.valueOf(rows[4])*1000;
}else if(rows[4].endsWith("M")){
rows[4]=rows[4].substring(0, rows[4].length()-1);
computeTotal=Integer.valueOf(rows[4])*1000*1000;
}else if(rows[4].endsWith("T")){
rows[4]=rows[4].substring(0, rows[4].length()-1);
computeTotal=Integer.valueOf(rows[4])*1000*1000*1000;
}else{
computeTotal=Integer.valueOf(rows[4]);
}
}
reset.close();
} catch (Exception e) {
logger.error(e);
} finally {
this.close(this.connect, st, reset);
}
return computeTotal;
}
*******************************************************
分页处需要修改:

int computeTotal=getComputeTotal(sqlall);
if(computeTotal<100000){
String countsql = "select count(*)  from xx t where 1=1  "+sqllike+"";
int count = 0;
st = getConnection().createStatement();
reset = st.executeQuery(countsql);
while(reset.next()){
count = reset.getInt(1);
}
pager.setTotal(count);
pager.setPageTotal(count/pager.getPageSize());
}else{
pager.setTotal(computeTotal);
pager.setPageTotal(computeTotal/pager.getPageSize());
}

已经在3亿数据量数据库做过测试

附快速统计某个表总记录数sql:
select table_name,num_rows from dba_tables where table_name ='XX'
分享到:
评论

相关推荐

    海量数据处理方法

    海量数据处理方法 海量数据处理是指基于海量数据上的存储、处理、操作,解决方案包括巧妙的算法搭配适合的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie 树,以及大而化小、分而治之的策略。...

    基于OPENDATASOURCE函数的SQL Server数据库海量数据的快速导入导出方法

    使用该函数,我们可以构建一个动态的SQL语句,将外部数据源的数据直接插入、更新或查询到SQL Server数据库中,避免了传统方式中需要先将数据加载到临时表或者使用BULK INSERT等方法的复杂过程。 要使用...

    MySQL海量数据查询优化策略.

    在处理MySQL海量数据查询优化时,我们需要关注的策略包括但不限于以下几点: 1. 优化索引使用:避免全表扫描至关重要。为此,应当在查询条件(WHERE)和排序(ORDER BY)涉及的列上创建索引。索引有助于数据库管理...

    海量数据查询的解决方案

    随着大数据技术的不断发展,各种高效解决方案应运而生,旨在帮助我们快速、准确地处理和查询大规模数据。这篇文档将深入探讨如何应对海量数据查询的问题,分享一些实用的技术和工具。 首先,我们得了解大数据的基本...

    基于内存映射文件技术的海量影像数据快速读取方法.pdf

    ### 基于内存映射文件技术的海量影像数据快速读取方法 #### 摘要与背景 随着信息技术和传感器技术的迅速发展,遥感图像的数据量呈现几何级数的增长趋势。传统的文件读取方法(如通过文件指针读取文件)仅能正确...

    基于Bloom Filter的海量数据分布式快速匹配算法研究.pdf

    Bloom Filter的引入是为了高效利用数据空间,在海量数据匹配查询方面具有重要作用。 3. 分布式技术与Bloom Filter结合:在海量数据快速匹配的背景下,分布式技术可以有效提升处理速度和数据的并发处理能力。文章...

    海量数据查询优化

    本篇文章将深入探讨“海量数据查询优化”这一主题,包括聚集与非聚集索引的区别,以及如何利用索引来提升查询性能。 首先,我们要理解什么是索引。索引是数据库管理系统中用于加速数据检索的数据结构。它类似于书籍...

    百万数据查询优化海量数据查询优化

    【标题】:“百万数据查询优化海量...以上策略是优化海量数据查询的基础方法,实际应用中,还需要根据具体数据库管理系统和业务需求进行调整。持续监控和分析查询性能,结合数据库调优工具,能进一步提升系统整体性能。

    常用大数据量,海量数据处理方法,算法总结

    海量数据处理方法总结 本文总结了常用的海量数据处理方法,包括 Bloom filter、Hashing 和 bit-map 等。这些方法可以用来解决大数据量的问题,例如数据字典、判重、集合求交集等问题。 Bloom Filter Bloom filter...

    论文研究-基于压缩策略的海量结构数据查询优化方法研究 .pdf

    1. 海量结构数据的查询优化问题:随着计算机和移动互联网技术的快速发展,大量数据的生成速度加快,如何高效地管理和查询这些海量数据成为了亟待解决的问题。特别是结构化数据,其处理效率直接影响到数据应用的价值...

    海量数据处理分析方法

    海量数据处理分析方法是现代信息技术领域中的关键技能,尤其对于涉及检索和数据分析的工作岗位而言,掌握这些方法显得尤为重要。随着互联网和物联网的发展,数据量呈现爆炸式增长,传统的数据处理手段已经无法应对...

    海量数据查询sqlserver

    在SQL Server中处理海量数据查询是一项挑战,但也是数据库管理员和开发人员必须掌握的重要技能。以下将详细讨论如何有效地进行海量数据的分页、查询和排序。 首先,我们来看**海量数据分页**。在SQL Server中,常见...

    基于HBase的海量数据查询

    本文当是一个基于HBase的海量数据的实实时查询系统的原理分析。详细的介绍了大数据查询的原理。

    海量数据查找数据问题

    总结起来,解决海量数据查找问题的关键在于:合理的数据结构选择,如快速选择、二叉堆和索引;高效的算法应用,如B树、B+树、哈希表和分布式计算;以及针对具体场景的优化策略。这些方法和技巧在实际工程中有着广泛...

    海量数据处理 海量数据处理

    海量数据是发展趋势,对数据分析和挖掘也越来越重要,从海量数据中提取有用信息重要而紧迫,这便要求处理要准确,精度要高,而且处理时间要短,得到有价值信息要快,所以,对海量数据的研究很有前途,也很值得进行...

    基于内存映射文件的海量点云数据快速读取方法.pdf

    基于内存映射文件的海量点云数据快速读取方法.pdf 本文提出了一种基于内存映射文件的海量点云数据快速读取方法,以解决海量点云数据读取效率低下的问题。该方法通过对虚拟内存系统模式和内存映射文件的工作机理进行...

    海量数据库的查询优化及分页方法

    海量数据查询优化及分页方法,本文中对查询数据的主要方法进行了分析,并给出了具体分析

    SQL 海量数据查询

    ### SQL Server 海量数据处理:查询、插入与删除 在现代数据分析与企业级应用中,高效处理海量数据是IT专业人员必须掌握的关键技能之一。本文将深入探讨SQL Server环境下如何进行大规模数据的操作,包括查询、插入...

    大数据量,海量数据 处理方法总结

    ### 大数据量,海量数据处理方法总结 在IT领域,特别是大数据分析、数据库管理和算法设计方面,处理海量数据的能力是至关重要的技能之一。本文旨在总结处理大数据量、海量数据的有效方法,涵盖从理论基础到实际应用...

Global site tag (gtag.js) - Google Analytics