请教高人:有一个超级大的数据表(四千万条数据)有10G这么大,想提高查询效率.

这是一个数据总表,每周都有数据增加,每周都要用几个数百行复杂SQL抽出数据。
现在速度越来越慢。求优化方法。
我有权限更改表结构,建立索引和视图。我已经建立的几个常用的索引。但是效果不是很好。
[ORACLE数据库 服务器是64核CPU。]
高人讲讲理念就好,当然如果能讲实现就更好了。
非常谢谢。
最新回答
青柠之恋

2026-05-08 00:02:38

你的数据库是一个不断更新的数据表,需要不断地进行“表分析”。
因为数据在变,虽然你做了很多索引,但索引的命中率很重要,随着数据的变化和增加,
在没有进行表分析的前提下,索引的效率会下降,到达一定的程度,数据库会自动放弃索引,
而采用数据扫描的方式。

因此,建议定义一个每天运行的任务,时间定在业务最空闲的时段,然后任务重执行analyze table 之类的语句。(关于表分析,网上可以搜索很锁专业文章。)
就可以的到很大提高了。
骑猪Δ追阳光

2026-02-01 05:49:21

如果不是所有的数据都要显示出来,你可以查询最近一个月或前100笔数据。
——℡半夏∝

2026-07-31 22:48:25

个人觉得 建物化视图比较好,我们平时遇到数据量比较大的话也是用物化视图来实现的
少女爷爷

2026-07-09 12:05:58

数百行复杂SQL

考虑把复杂sql用若干个简单sql代替。没有具体的sql,谁也不知道这个慢的原因。
收起 2条折叠回答