Oracle查询全表扫描

时间:2014-07-02 14:16:36

标签: sql oracle sql-execution-plan

我不明白为什么这个(按范围划分)表在此查询中处于全表扫描中:

UPDATE customer_table
   SET username = '',
       phone = '',
       ip = '',
       cell = '',
       channel = ''
 WHERE id = '';

我也创建了这个索引:

CREATE INDEX customer_table_UPD_EXT_SYS ON customer_table
(USERNAME, CLI, IP, MSISDN, CANALE, TN)

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

要避免全表扫描,索引必须(至少部分地)匹配WHERE子句。在您的示例中,customer_table.id上的索引会有所帮助。您的索引customer_table_UPD_EXT_SYS包含更新的列;关于你的UPDATE语句,这实际上是坏消息,因为索引也需要更新,这可能比更新表更昂贵。