gpt4 book ai didi

oracle - INSERT 和 UPDATE 操作中如何以及何时使用索引?

转载 作者:行者123 更新时间:2023-12-02 13:03:34 25 4
gpt4 key购买 nike

考虑this有关索引的 Oracle 文档,this关于插入速度和this StackOverflow 上的问题让我得出这样的结论:

  • 索引帮助我们更快地查找信息
  • 主键和唯一键自动编制索引
  • 使用索引插入可能会导致性能下降

但是,每次讨论索引时,仅显示 SELECT 操作作为示例。

我的问题是:INSERTUPDATE 操作中是否使用了索引?何时以及如何?

我的建议是:

  • UPDATE 可以在 WHERE 子句中使用索引(如果子句中的列有索引)
  • INSERT 在使用 SELECT 时可以使用索引(但在本例中,索引来自另一个表)
  • 或者可能在检查完整性约束时

但我对使用索引没有那么深入的了解。

最佳答案

对于 UPDATE 语句,如果优化器认为索引可以加快速度,则可以使用索引。索引将用于定位要更新的行。从某种意义上来说,索引也是一张表,因此如果索引列要更新,显然也需要更新索引。另一方面,如果您在没有 WHERE 子句的情况下运行更新,优化器可能会选择不使用索引,因为它必须访问整个表,全表扫描可能会更有效(但可能仍然需要更新索引) )。优化器在运行时根据多个参数做出这些决策,例如是否有针对相关表和索引的有效统计数据、有多少数据受到影响、硬件类型等。

对于 INSERT 语句,虽然 INSERT 本身不需要索引,但索引也需要“插入”,因此需要由 oracle 访问。 INSERT 可能导致使用索引的另一种情况是这样的 INSERT:

INSERT INTO mytable (mycolmn)
SELECT mycolumn + 10 FROM mytable;

关于oracle - INSERT 和 UPDATE 操作中如何以及何时使用索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34706080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com