Oracle索引创建策略

时间:2014-07-31 14:10:04

标签: performance oracle indexing

任何机构都可以帮助解决以下性能问题。

select 1
from table_1 a
     ,table_2 b
     ,table_3 c
where c.trx_date between sysdate-12 and sysdate-12
and  c.trx_id=b.trx_id
and  c.type_id=a.type_id;

这里我需要在trx_date列上的table_3上创建索引,因为这是sql查询的主要过滤器。

现在我的问题是索引是否需要与其他表连接查询时使用的其他列。

对于上面的查询,我需要使用列trx_date,trx_id,type_id

创建索引

或只有trx_date的索引才能解决性能问题?

此致 Vijay Nalawade

1 个答案:

答案 0 :(得分:2)

您必须在用于外键的列上创建索引,它可以帮助您避免死锁。

我对trx_date无话可说,因为我不了解你的表格结构和表格内容。如果要提取0-20%的行(确切的百分比数取决于记录卷),创建索引是有意义的,在其他情况下,oracle将执行完全扫描。优化器将评估需要从文件系统读取到缓存中的块数,并选择编号最小的方式,如果在完全扫描期间它读取的块数较少,oracle将执行全扫描