加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 13:14:57 所属栏目:百科 来源:网络整理
导读:考虑 this关于索引的Oracle文档,关于插入速度的 this和关于StackOverflow的 this问题,我得出结论: 索引可帮助我们更快地找到信息 主键和唯一键自动编入索引 使用索引插入可能会导致性能下降 但是,每次讨论索引时,只有SELECT操作显示为示例. 我的问题是:INS
考虑 this关于索引的Oracle文档,关于插入速度的 this和关于StackOverflow的 this问题,我得出结论:

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

但是,每次讨论索引时,只有SELECT操作显示为示例.

我的问题是:INSERT和UPDATE操作中使用的索引是什么?何时以及如何?

我的建议是:

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

但我对使用索引知之甚少.

解决方法

对于UPDATE语句,如果优化器认为索引可以加速,则可以使用索引.索引将用于定位要更新的行.索引也是一种表格,所以如果索引列得到更新,显然也需要更新索引.另一方面,如果您在没有WHERE子句的情况下运行更新,优化器可能会选择不使用索引,因为它必须访问整个表,全表扫描可能更有效(但可能仍需要更新索引) ).优化器根据几个参数在运行时做出这些决定,例如是否存在针对所讨论的表和索引的有效统计数据,受影响的数据量,硬件类型等.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读