Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle中索引表的最佳方法_Oracle_Indexing - Fatal编程技术网

在Oracle中索引表的最佳方法

在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

对表中的同一列使用多个索引是一种好做法吗

表A中有列
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%)需要更详细的分析

    索引中列的顺序很重要。不同的查询将能够使用这些索引。您应该根据需要创建索引。关于有多列的索引-经验法则说,子树应该尽可能小(这意味着基数最大的列应该是前缀)。