将新列添加到表并在其上设置索引时,查询会花费太多时间

时间:2014-05-24 18:54:54

标签: sql oracle11g

我在表格中添加了一个新列,其中包含十万条记录。并使用三列(一个新添加+两个现有列)创建了composit索引

例如。在表TBL中有两列,如col1,col2

我已将新列col3添加到TBL并创建了合成索引(col3,col1,col2)。

现在,对于所有记录,col3的值为NULL。当我选择这张桌子时,需要花费太多时间..

任何想法,我做错了什么。,我检查它使用索引的查询计划

2 个答案:

答案 0 :(得分:0)

当表的行数较少或索引中的值太多时,使用索引非常昂贵。

检查查询计划的成本,而不是使用索引。

此外,您似乎在运行时添加了新行(空值),这可能表明您的架构已经非规范化。

答案 1 :(得分:0)

使用

进行统计收集解析
  

DBMS_STATS.GATHER_TABLE_STATS

感谢@Jan的观点..