同样提议改成分区表,保持逻辑不变的话,使用函数分区。
PARTITION BY TO_CHAR(CreateTime, 'YYYYMM')
效果和你现在手工分区一样。
然后在检索条件的列上建个global index。这个数据量,不可能会有问题。
再说使用分区表,程序里会更简单。
话说你们都买了Oracle,还手工分区?!!
1:从你的表字段来看,单张表50万数据应该10m左右,也就是说一年的数据应该在在120m左右,所以做120m的缓存还是可行的(当然你的数据可能不仅是来源一张表,或是查询跨度很大,数据量很大,缓存需要就很大,这样可能会需要一些额外的投入了)
2:从你的查询条件来看,跨越了3张表,数据量应该在100万的样子,或许你用了一条sql去查,但是我觉得1分多钟,实在让人难以忍受。
a:如果查询条件是时间段,考虑在时间字段上建索引(我看你查询条件是精确到日的,可以考虑对,对日期进行函数处理后,做该字段的 函数索引)
b:是否存在非必要的order by,
c:如果是union ,要在每个union 加上时间过滤
d:可以根据业务将数据进行合并,例如只允许查询最近5个月的数据,可以将最近五个月数据insert select 到一个表空间中。下次查询判断时间是否在临时表内,如果在,就直接查询,如果不在,就将不在范围的数据insert select 到临时表中。
3:看看表空间利用情况吧,如果该数据库实例数据很大,表空间利用率很高(分表的数据文件可以放到不同的磁盘)
50万条记录,一页10条,他不翻的吐血了。
如果不需要总页数的话,不需要count可以提高性能。
比如可以先搜索一天的数据作分页,当翻到最后的时候,自动搜索下一天的数据,继续翻页.[最好把一天的数据cache到缓存,可以减少与数据库的交互].
建议用缓存+多线程,第一次查询的时候多起几个线程分别查询这几张表,将查询的几个大记录合并发送至缓存服务器,翻页的时候直接从缓存中取对应的开始序号到结束序号,我公司的系统(用户表有30张)就是这么搞的。
1、分页查数据 每次记录最后的PKID
2、下次查询时 加上 pkid > 上次最大的id
这样可缩小数据范围 而且每次取第一页
40w不是很多 你执行下explain看下有没有走索引
你可以尝试使用存储过程,在里面根据条件查询出几张表共有多少条符合条件,
每次去查询的时候不一定要查询几张表,而是根据条件去查询一张单独的表,要是有涉及到两张表以上的情况,则说明分页的数据可能跨越2张表或者是三张表,总之尽量查询一张表,只有查询的数据介于两张表之间,才去关联,这里面的存储过程应该比较复杂。
避免用union all/union这样的语句join后再套一层select和rownum之类的做分页
如果除了时间外没有其他查询条件了,你可以建一些统计表,比如2月份多少条,3月份多少条,这样,然后看你要查第几页,直接定位到那张表
如果有其他查询条件就很麻烦了,要统计各种查询条件下每张表有几条记录这样,当然如果条件可能性太多了,可能这个方法就不太方便了
相关推荐
Oracle 10g 数据库海量数据分页查询优化 本文主要介绍 Oracle 10g 数据库中的一种优化的海量数据分页查询解决方案。该方案通过分析传统分页查询技术的不足,融合了多种技术,包括数据库优化策略、SQL 语句优化、...
在Oracle数据库中进行分页查询时,经常会出现性能瓶颈,尤其是在处理大数据量的情况下。本篇文章将详细探讨如何优化Oracle分页查询中的排序与效率问题。 #### 一、理解Oracle分页查询的基本原理 在Oracle中实现...
### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...
### Oracle分页查询详解 #### 一、分页查询的重要性 在数据库操作中,分页查询是一项非常重要的技术。尤其当处理大量数据时,一次性获取所有数据不仅会消耗大量的网络带宽,还可能导致前端页面加载缓慢,用户体验...
Oracle数据库则提供SQL查询语言来操作数据,包括支持分页查询的语句。 实现分页功能,主要涉及以下几个步骤: 1. **设置查询参数**:包括每页显示的记录数(pageSize)和当前页数(pageNumber)。这些参数通常由...
- **查询统计信息**:可以通过创建的表(如MY_STATISTICS)直接查询收集的统计信息,或者通过Oracle提供的GET_SYSTEM_STATS过程获取特定类型的统计数据。 综上所述,通过以上知识点的学习,我们不仅可以了解Oracle...
Oracle数据库在处理大数据量查询时,分页查询是一种常见的优化策略,目的是限制返回结果集的大小,加快查询速度,提供更好的用户体验。本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询...
Oracle 的分页查询 在 Oracle 中,分页查询是非常常见的需求,但是在使用查询条件时又不能使用大于号(>)。本文将讲解 Oracle 中的分页查询,包括使用 ROWNUM 伪列和 ORDER BY 子句对查询结果进行排序和分页。 一...
在SpringBoot项目中,整合Mybatis-Plus并实现多数据源的动态切换,同时支持分页查询是一项常见的需求。以下将详细阐述这个过程中的关键步骤和技术要点。 首先,我们需要引入必要的Maven依赖。这里提到了四个关键...
Oracle数据库在处理大数据量时,分页查询是一个非常重要的功能,它可以帮助用户高效地获取数据集的一部分,而不是一次性加载所有结果。本篇文章将详细介绍Oracle中的分页查询,并提供一种常用的分页查询语句格式和一...
本文详细介绍了如何设计一个能够支持千万数量级数据处理的分页存储过程,包括了多表查询的支持、任意排序功能的实现以及高效的数据获取策略等关键知识点。通过对这些技术点的理解和掌握,可以有效地提高数据库应用的...
这个通用的存储过程简化了在Oracle中的分页操作,但需要注意的是,如果查询涉及到多表连接,性能可能会受到影响,因为ROWNUM是在查询整个结果集之后应用的。为了优化,可以考虑使用Oracle的ROW_NUMBER()函数配合窗口...
在Oracle数据库中,SQL分页是一种非常常见的查询技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这对于提高用户体验和优化系统性能至关重要,尤其是在处理大数据量的Web应用中。本实践...
总结来说,Oracle和JSP结合实现分页涉及以下几个步骤:在Oracle中构造分页查询,使用JDBC在Servlet中执行查询,然后在JSP页面中展示数据。理解并熟练掌握这些步骤对于开发高效、用户友好的数据驱动网站至关重要。在...
在Oracle数据库中,实现搜索分页查询是一项常见的任务,特别是在构建高效的数据检索系统时。分页查询允许用户逐步浏览大量数据,而无需一次性加载所有结果,从而提高用户体验并减轻服务器负担。以下是如何在Oracle中...
### Oracle认证详解:Oracle的几种分页查询语句 #### 分页查询背景及重要性 在数据库管理系统(DBMS)中,特别是在Oracle这样的大型关系型数据库中,分页查询是一种非常实用的技术。它允许用户根据需求获取特定...
Oracle 分页查询是指从大型数据表中提取指定范围的记录,以便提高查询效率和减少数据传输量。常用的 Oracle 分页查询方法有三种:使用 ROWNUM、使用 ROW_NUMBER() 和使用子查询。 第一种方法:使用 ROWNUM Oracle...
自定义数据分页存储过程是一种有效的方法,它能够避免全表扫描,降低数据库资源消耗,同时提供灵活的查询条件。本文将详细介绍如何在Oracle中创建一个自定义的数据分页存储过程,并给出C#代码的使用示例。 首先,...
在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,我们通常会将数据分批加载,这就是所谓的“分页”。Java作为一种常用的后端开发语言,提供了多种方式来实现对Oracle...
本教程以"韩顺平Oracle版的分页查询"为主题,结合MyEclipse进行Web开发,旨在教授如何在Oracle数据库中实现高效且实用的分页查询。 首先,我们需要理解Oracle中实现分页查询的基本概念。在SQL语句中,通常使用`...