2016-08-08 35 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

相關問題