2016-08-08 20 views
-2

在下面的链接的时候,我们应该建立在特定的列或列索引它被指定:什么时候我们应该在oracle的特定列上创建索引?

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

  1. 索引列经常查询和返回行的总数的一小部分桌子。

  2. 索引完整性约束存在于索引列或列上。如果您更新父表主键,合并到父表或从父表中删除索引,索引是避免完全表锁的一种手段,否则这将是必需的。

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

第一点是明确的,任何人都可以请解释第二和第三点?

+0

那么爱因斯坦,你为什么不抬头术语“参照完整性约束”作为您的第一个停靠点。 –

+0

目前还不清楚你对所给文本的理解。 –

+0

@艾伯特爱因斯坦,我会试着解释第二点。假设有一个DEPT表和一个EMP表。 DEPT_ID是DEPT表中的PK和EMP表中的外键。假设您没有在EMP表中的DEPT_ID列上定义索引,在这种情况下,无论何时您要更新DEPT表中的DEPT_ID或从DEPT表中删除一行,都将在EMP表上获取全表锁。假设您在EMP表中的DEPT_ID列上有一个索引,则只有相关的行将被锁定在EMP表中。 –

回答

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

+0

再次感谢您! – Wolfgang

相关问题