这是一个数据总表,每周都有数据增加,每周都要用几个数百行复杂SQL抽出数据。现在速度越来越慢。求优化方法。我有权限更改表结构,建立索引和视图。我已经建立的几个常用的索引。但是效果不是很好。[ORACLE数据库 服务器是64核CPU。]高人讲讲理念就好,当然如果能讲实现就更好了。非常谢谢。
你的数据库是一个不断更新的数据表,需要不断地进行“表分析”。因为数据在变,虽然你做了很多索引,但索引的命中率很重要,随着数据的变化和增加,在没有进行表分析的前提下,索引的效率会下降,到达一定的程度,数据库会自动放弃索引,而采用数据扫描的方式。因此,建议定义一个每天运行的任务,时间定在业务最空闲的时段,然后任务重执行analyze table 之类的语句。(关于表分析,网上可以搜索很锁专业文章。)就可以的到很大提高了。