什么时候我们应该在oracle的特定列上创建索引?

时间:2016-08-08 05:21:18

标签: oracle

在下面的链接中,我们应该在特定列或列上创建索引时指定:

https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT1895

  1. 经常查询索引列,并返回表中总行数的一小部分。

  2. 索引列上存在参照完整性约束。索引是一种避免全表锁定的方法,如果更新父表主键,合并到父表或从父表中删除,则需要使用该表。

  3. 将在表上放置一个唯一的键约束,并且您希望手动指定索引和所有索引选项。

  4. 第一点很清楚,有谁可以解释第二和第三点?

1 个答案:

答案 0 :(得分:1)

我将尝试解释第二点。假设有一个DEPT表和一个EMP表。 DEPT_ID是DEPT表中的PK和EMP表中的外键。假设您尚未在EMP表中的DEPT_ID列上定义索引,在这种情况下,只要您更新DEPT表中的DEPT_ID或从DEPT表中删除一行,就会在EMP表上获取完整的表锁。假设您在EMP表中的DEPT_ID列上有索引,只有相关的行将被锁定在EMP表中。

至于第三点,我建议您阅读以下链接。

https://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm#i1106547

https://asktom.oracle.com/pls/asktom/f?p=100:11:2017491281965674::::P11_QUESTION_ID:36858373078604