索引是否与oracle中的组函数一起使用?

Anu*_*dve 4 sql oracle indexing oracle11g

我正在运行以下查询.

SELECT Table_1.Field_1,
           Table_1.Field_2,
           SUM(Table_1.Field_5) BALANCE_AMOUNT
      FROM Table_1, Table_2
     WHERE Table_1.Field_3 NOT IN (1, 3)
       AND Table_2.Field_2 <> 2
       AND Table_2.Field_3 = 'Y'
       AND Table_1.Field_1 = Table_2.Field_1
       AND Table_1.Field_4 = '31-oct-2011'
     GROUP BY Table_1.Field_1, Table_1.Field_2;
Run Code Online (Sandbox Code Playgroud)

我为列创建了索引(Field_1,Field_2,Field_3,Field_4),Table_1但索引没有被使用.

如果我删除了SUM(Table_1.Field_5) from select子句,则会使用索引.

如果优化器没有使用此索引或因为SUM()我在查询中使用的函数而感到困惑.

请分享你的解释.

Ton*_*ews 6

删除SUM时,也会field_5从查询中删除.然后可以在索引中找到回答查询所需的所有数据,这可能比扫描表更快.如果添加field_5到索引,则使用SUM的查询可能会使用索引.