oracle 数据库表数据量比较大,如何提升查询速度?
答案:4 悬赏:80 手机版
解决时间 2021-04-05 10:11
- 提问者网友:最美的风景
- 2021-04-04 17:59
oracle 数据库表数据量比较大,如何提升查询速度?
最佳答案
- 五星知识达人网友:青尢
- 2021-04-04 18:18
可以利用分区技术,将老数据按时间分区到一个分区里。新数据在新的分区了。
建立分区索引。利用分区索引查询还要快一些。追问嗯,现在是表里已经有数据几百万的数据了,而且我不会分区,找了些资料看的不大明白啊追答分区就是把一个表的各个字段分别保存在不同的区上。
网上的例子很多,建表很简单:
CREATE TABLE TABLE_PARTITION 这个表名随便 取(
COL1 NUMBER,
COL2 VARCHAr2(10)
)
partition by range(COL1)(
partition TAB_PARTOTION_01 values less than
(450000),
partition TAB_PARTOTION_02 values less than
(900000),
partition TAB_PARTOTION_OTHER values less THAN
(MAXVALUE)
);
建立分区索引。利用分区索引查询还要快一些。追问嗯,现在是表里已经有数据几百万的数据了,而且我不会分区,找了些资料看的不大明白啊追答分区就是把一个表的各个字段分别保存在不同的区上。
网上的例子很多,建表很简单:
CREATE TABLE TABLE_PARTITION 这个表名随便 取(
COL1 NUMBER,
COL2 VARCHAr2(10)
)
partition by range(COL1)(
partition TAB_PARTOTION_01 values less than
(450000),
partition TAB_PARTOTION_02 values less than
(900000),
partition TAB_PARTOTION_OTHER values less THAN
(MAXVALUE)
);
全部回答
- 1楼网友:纵马山川剑自提
- 2021-04-04 20:17
几百万数据不算多啊,索引正确,sql语句能正确使用索引。完全没有任何问题的追问嗯,目前来看是不算多,但这是一个订单表,订单会不断增多的,分区该怎么分啊?追答百度索引!
- 2楼网友:孤独入客枕
- 2021-04-04 19:08
多建些索引可能会好些。
还可以建一个临时表;把符合条件的数据增加到临时表中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘I/O,所以查询工作量可以得到大幅减少。
还可以建一个临时表;把符合条件的数据增加到临时表中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘I/O,所以查询工作量可以得到大幅减少。
- 3楼网友:举杯邀酒敬孤独
- 2021-04-04 19:00
数据表百万级的数据量,其实还是不是很大的,建立合理的索引就可以解决了。建立分区表的话,是可以根据所分区的内容进行查询的,比如单独查询2011年度的记录,但是因为你已经有了一定的历史数据,所以相对比较麻烦,建议百度一下。另外也可以将数据导出,然后重新建立需要分区的表,在建表的同时进行分区,这样再单独把数据导入就自动分区了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯