任何机构都可以帮助解决以下性能问题。
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
答案 0 :(得分:2)
您必须在用于外键的列上创建索引,它可以帮助您避免死锁。
我对trx_date
无话可说,因为我不了解你的表格结构和表格内容。如果要提取0-20%的行(确切的百分比数取决于记录卷),创建索引是有意义的,在其他情况下,oracle将执行完全扫描。优化器将评估需要从文件系统读取到缓存中的块数,并选择编号最小的方式,如果在完全扫描期间它读取的块数较少,oracle将执行全扫描