-
oracle动态表数据分页查询10
假设我的数据表的结构是
Create table OrderyyyyMM
(
PKID nvarchar(36),
ProductId nvarchar(20),
Price number,
CreateTime char(19)
)
一个月一张表,每个表一个月大概有50万条记录。
现在我要分页查询(每页显示十条记录),查找2013年2月25日到2013年4月10日的数据。
请问如何编写这条语句性能才是最高?数据量实在太大了,现在建了索引查找也特别慢。2013年4月11日 15:30
11个答案 按时间排序 按投票排序
-
写原生sql应该行吧 http://www.kxikx.com/nosm/response!input.action?parentId=8ab20e8f413e711e01413e72a2b10002
2013年9月24日 11:41
-
同样提议改成分区表,保持逻辑不变的话,使用函数分区。
PARTITION BY TO_CHAR(CreateTime, 'YYYYMM')
效果和你现在手工分区一样。
然后在检索条件的列上建个global index。这个数据量,不可能会有问题。
再说使用分区表,程序里会更简单。
话说你们都买了Oracle,还手工分区?!!2013年4月21日 17:11
-
1:从你的表字段来看,单张表50万数据应该10m左右,也就是说一年的数据应该在在120m左右,所以做120m的缓存还是可行的(当然你的数据可能不仅是来源一张表,或是查询跨度很大,数据量很大,缓存需要就很大,这样可能会需要一些额外的投入了)
2:从你的查询条件来看,跨越了3张表,数据量应该在100万的样子,或许你用了一条sql去查,但是我觉得1分多钟,实在让人难以忍受。
a:如果查询条件是时间段,考虑在时间字段上建索引(我看你查询条件是精确到日的,可以考虑对,对日期进行函数处理后,做该字段的 函数索引)
b:是否存在非必要的order by,
c:如果是union ,要在每个union 加上时间过滤
d:可以根据业务将数据进行合并,例如只允许查询最近5个月的数据,可以将最近五个月数据insert select 到一个表空间中。下次查询判断时间是否在临时表内,如果在,就直接查询,如果不在,就将不在范围的数据insert select 到临时表中。
3:看看表空间利用情况吧,如果该数据库实例数据很大,表空间利用率很高(分表的数据文件可以放到不同的磁盘)2013年4月12日 11:12
-
50万条记录,一页10条,他不翻的吐血了。
如果不需要总页数的话,不需要count可以提高性能。
比如可以先搜索一天的数据作分页,当翻到最后的时候,自动搜索下一天的数据,继续翻页.[最好把一天的数据cache到缓存,可以减少与数据库的交互].2013年4月11日 16:35
-
建议用缓存+多线程,第一次查询的时候多起几个线程分别查询这几张表,将查询的几个大记录合并发送至缓存服务器,翻页的时候直接从缓存中取对应的开始序号到结束序号,我公司的系统(用户表有30张)就是这么搞的。
2013年4月11日 16:13
-
1、分页查数据 每次记录最后的PKID
2、下次查询时 加上 pkid > 上次最大的id
这样可缩小数据范围 而且每次取第一页
40w不是很多 你执行下explain看下有没有走索引2013年4月11日 15:52
-
你可以尝试使用存储过程,在里面根据条件查询出几张表共有多少条符合条件,
每次去查询的时候不一定要查询几张表,而是根据条件去查询一张单独的表,要是有涉及到两张表以上的情况,则说明分页的数据可能跨越2张表或者是三张表,总之尽量查询一张表,只有查询的数据介于两张表之间,才去关联,这里面的存储过程应该比较复杂。2013年4月11日 15:47
-
避免用union all/union这样的语句join后再套一层select和rownum之类的做分页
如果除了时间外没有其他查询条件了,你可以建一些统计表,比如2月份多少条,3月份多少条,这样,然后看你要查第几页,直接定位到那张表
如果有其他查询条件就很麻烦了,要统计各种查询条件下每张表有几条记录这样,当然如果条件可能性太多了,可能这个方法就不太方便了2013年4月11日 15:43
相关推荐
解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题
SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询,案例以postgresql和oracle数据库为数据源,分别使用mybatis-plus分页插件和pagehelper分页插件实现分页查询。
oracle分页查询并返回总记录数据的存储过程
Oracle 10g数据库海量数据分页查询优化.pdf
Oracle 分页实例 带分页控件用法 Oracle 实现数据列表分页。
千万数量级分页存储过程,可支持多表查询,任意排序
java实现oracle分页策略完整版,可当做参考类使用,有详细注释,适合初学者。
Oracle分页查询(很不错的介绍) 保证不会让你失望
源代码实现的实在Java web与Oracle数据开发过程中的分页功能,代码不难,看看就能看懂,使用其中的核心代码能够轻易实现分页功能。希望对初学者有一定的帮助。
一个通用的存储过程,完成分页查询数据,只需要在查询的最后调用此过程,即可实现分页和按分页进行查询数据
Oracle分页存储过程,根据指定条件分页 并附上使用示例(C#代码) 注:不能查询视图或者包含distinct、group by、inner join的子句
1、请先在Oracle数据中新建存储过程 2、修改代码中的相关参数。比如,连接数据库字符串,查询的sql语句等 注意:查询sql语句中必须包含rownum字段,别名是rn。rownum是Oracle关键字。 存储是来自...
mybatis 分页 mybatis-generate Oracle数据库 大家知道mybatis自动生成代码是没有分页功能的 我在网上找了很久 有很多内容 但正真可以使用的少之又少 本人整合了网上的资源 整理了基于Oracle数据库的mybatis插件 ...
经过项目测试,copy可以直接运用到项目中,我测试的是1千2百万数据。 如果有更好的分页,可以相互交流一下,谢谢。
也就是说,允许用户提交一个返回很多行数据的查询,但是只显示前20条。在用户点击一个链接时,下20条或者前20条数据会从数据库应用程序中取出。数据库访问存在的一个问题是来自 Web 站点的请求是无状态的。在等待...
VC查询Oracle数据(包括存储过程、分页查询)
Java海量数据分页Bean, 适用于Oracle(适当修改,适用于任何数据库).功能描述:传入到达页码(具有容错性)、每页记录数、Select查询语句,返回该页所有的记录(整页是List集合,每条记录是一个 HashMap)、总行数、总...
kettle oracle循环分页迁移数据的完整例子,生成txt后FTP上传到远程服务器
主要给大家介绍了关于oracle实现一对多数据分页查询筛选的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
oralce千万级数据存储过程分页技术,网上很稀有的哦~~