Oracle10g 表联接中的oracle索引
如果我这样做Oracle10g 表联接中的oracle索引,oracle10g,Oracle10g,如果我这样做 select * from table1 where table1.col1 = 'xx' and table1.col2 = 'yy' and table1.col3= 'zz'` 执行计划显示全表扫描。 此表中的索引针对col4和col5存在。 我是否需要在col1、col2、col3中的每一个上设置一个索引以使查询执行得更好 如果查询是这样的: select * from table1,table2
select *
from table1
where table1.col1 = 'xx'
and table1.col2 = 'yy'
and table1.col3= 'zz'`
执行计划显示全表扫描。
此表中的索引针对col4和col5存在。
我是否需要在col1、col2、col3中的每一个上设置一个索引以使查询执行得更好
如果查询是这样的:
select *
from table1,table2
where table1.col1=table2.col2
and table1.col2 = 'yy'
and table1.col3= 'zz'
如果我们在col1和col2上创建索引,是否足够?您应该尝试在查询中使用的列上添加索引:
- 表1 col1
- 表1 col2
- 表1 col3
- 表2 col2
- 表1(col2、col3)
在不了解更多数据的情况下,很难预测哪个索引最有效,但您可以尝试几种不同的可能性,看看什么最有效。谢谢。您提到“在不了解更多数据的情况下”,在对所有列创建索引之前,我可以检查哪些内容?@Kaushik:重要的是索引的选择性。数据库通常倾向于使用最具选择性的索引。找出哪个索引更好的一种简单方法是添加您认为可能会使用的所有索引,然后查看查询计划以查看其中哪些实际使用。然后,如果不需要,可以再次删除其他索引。显然,如果您有一个包含合理数量测试数据的表,那么这会更好——如果该表几乎为空,则不会使用索引,如果您有数十亿行,则创建索引将花费很长时间。