Oracle-Oracle批量查询问题,如何优化?

Oracle-Oracle批量查询问题,如何优化?

浮生未歇 发布于 2017-08-16 字数 583 浏览 1234 回复 2

我有一个很大的表,每隔30秒产生1万条数据,这样一天就是2880万条。表有一个id列,有1万个。还有一个time列,是插入时间。

我对表进行了组合分区,按1天来的间隔分区,间隔分区之下,又散列了16个分区。

现在查询,多个id在多个小时内的数据。
select * from collect_data_03
where time >= trunc(sysdate-1, 'hh')-9/24 and time < trunc(sysdate-1, 'hh')+13/24 and (id = '13000000110' or id = '13000001254');

我试过建立time和id的联合索引,也试过建立单个索引。效果都不好。

有没有什么方法能够解决查询速度的问题?

或者,怎么建表,更有利于查询?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-10-26 2 楼

对数据实时性要求不高的 可以把数据缓存到redis

偏爱自由 2017-09-12 1 楼

可以采用类似聚簇的方法。

对数据进行缓存,半小时批量存储一次。批量存储的时候,按照id进行分组存储。

这样的话,id一样的在同一物理块上的可能性很大,可以减少查询时读取的块数。