在Oracle中索引表的最佳方法
对表中的同一列使用多个索引是一种好做法吗 表A中有列在Oracle中索引表的最佳方法,oracle,indexing,Oracle,Indexing,对表中的同一列使用多个索引是一种好做法吗 表A中有列col1、col2、col3、col4、col5、col6 索引 Index1on(col1、col2、col3) Index2on(col4、col2、col6) Index3on(第2列、第1列、第3列、第4列、第5列) 在这种情况下,col1、col2、col3是表A的多个索引的一部分。将的每一列都作为单个索引的一部分还不够吗 在多索引中有相同的列有什么用。请澄清。视情况而定;) 在很多情况下,多个索引包含同一列是非常有用的 另请参见As
col1、col2、col3、col4、col5、col6
索引
Index1
on(col1、col2、col3)Index2
on(col4、col2、col6)Index3
on(第2列、第1列、第3列、第4列、第5列)col1、col2、col3
是表A的多个索引的一部分。将的每一列都作为单个索引的一部分还不够吗
在多索引
中有相同的列
有什么用。请澄清。视情况而定;)
在很多情况下,多个索引包含同一列是非常有用的
另请参见Ask Tom上的这篇文章:
索引是否有用在很大程度上取决于您的数据和查询。尤其是查询返回的记录百分比非常重要
下面的示例稍微简化了一点,但通常是系统的工作方式:
想象一下,您的数据库在每个数据库块上存储10条记录,您的查询必须返回所有记录的10%。在这种情况下,每10条记录必须返回一次。在最坏的情况下,您必须读取每个数据库块(完整表扫描)。在这种情况下,索引将减慢查询速度,因为您必须额外读取索引
什么时候使用索引有不同的意见。我的经验是:
如果选择1%或更少,则索引良好
如果选择了10%或更多,则可以进行全表扫描
否则(1%-9%)需要更详细的分析索引中列的顺序很重要。不同的查询将能够使用这些索引。您应该根据需要创建索引。关于有多列的索引-经验法则说,子树应该尽可能小(这意味着基数最大的列应该是前缀)。