Oracle数据库中有2张表,一张是tm_bus_realtime_log当前表 只有当前一天的数据。数据量有几百万的数据。还有一张表,tm_bus_rea
场景描述:
Oracle数据库中有2张表,一张是tm_bus_realtime_log当前表 只有当前一天的数据。数据量有几百万的数据。还有一张表,tm_bus_realtime_his历史表 进行了分区。每10天一分区,就是每个月有3个分区。整个历史表有几亿的数据量。每个分区有千万条数据。
问题描述:
在从历史表的分区中,查询数据时,很慢,由于数据量非常大,如果想查询几天的数据更慢?应该如何提高查询的速度?
在论坛上发了一个关于这方面的一个帖子,非常感谢留下意见的人,一些好的建议如下:
1 改成一天一个分区
2 对历史数据 进行清理,比如只保存2年的数据
3 依据计划看看索引建的合适不
4 如果你的查询条件中,除了时间,如果还有其他的字段,那就要相应的建上本地索引
5 如果历史表数据不更改的话,可以考虑在时间字段建立一个trunc(XX)位图函数索引,查询的时候再指定分区。
6 表分区、那索引分区
7 依据where条件而定。
基于Intranet/Internet 的Web下的办公自动化系统,采用了当今最先进的PHP技术,是综合大量用户的需求,经过充分的用户论证的基础上开发出来的,独特的即时信息、短信、电子邮件系统、完善的工作流、数据库安全备份等功能使得信息在企业内部传递效率极大提高,信息传递过程中耗费降到最低。办公人员得以从繁杂的日常办公事务处理中解放出来,参与更多的富于思考性和创造性的工作。系统力求突出体系结构简明
0
我的一些做法:
其实就是想做两个界面,把需要的一些综合信息查询出来进行展示,这些信息数据量很大。进行了分区。但是查询出来显示的时候,当天一天的数据还可以,但是一但垮天,跨分区之后,就查询的速度特别的慢。
1 对于当前表tm_bus_realtime_log。查看它的索引,只有一个(索引名:INDEX_BUS_REALTIME 字段名:UPLOAD_TIME)
而我的查询SQL里面的条件里面有2个字段,一个是bus_no,一个是upload_tiime,应该把索引字段紧跟到where条件后。
2 对于查询出来的数据,不要使用*,最好是具体的字段。
3 在plsql里面按F5,对该SQL语句,看一下它的执行计划,看是进行的全表扫描,,还是走的索引。
4 索引不适合建立很多,多了,也会影响查询效率。当时就把其中一个没用的多余的索引删除了。速度也就快了。
5 尽量不要使用in。使用exists.
6 优化代码。
现在查询出来的数据快多了!

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号