我们有一张2.26亿条记录的表格。
表具有旅行ID和修订版
的复合主键每个旅行ID下的最大记录修订数接近5000。
现在我们查询如下
select * from
(select * from travel
where travel_id=xxxx
order by travel_date desc)
where rownum <= 5;
此查询在20秒内运行。
我们的SLA低于5秒。因此在travel_id上创建了分区索引,每个分区索引为250000(我们的旅行ID最多为3200万) 这给我的结果低于2秒。 但由于表记录的no:不是在每个分区范围内均匀分布,我计划安排索引号,以便在每个分区下具有相同数量的记录。 分数范围根据每个travel_id下的记录数量而变化。但现在我的运行时间更长,为9秒。
我只是想知道我用这两种方法之间的差异来证明为什么具有相等范围的索引比具有不等范围但数据大小相等的索引分区更快?
请建议。
答案 0 :(得分:0)
对于该表单的查询,我不会查看分区:(travel_id,travel_date desc)上的索引应该在亚秒时间内获取行。
为了进一步改进,您可能会尝试使用群集或索引组织表对基于travel_id和travel_date的值进行物理群集,但这可能会对系统的其余部分产生影响。