Index

DB2 Load Utility 主鍵與唯一索引

  • March 26, 2021

簡而言之,主鍵是否兼作唯一索引?

一些背景:

我正在嘗試使用在 IXF 文件類型中載入的 DB2 Load 實用程序將一堆數據載入到兩個表中。數據按表分開,每個表按月分開,所以我需要重複執行載入命令。數據的實際載入似乎不需要很長時間,但是,該實用程序會在每次載入後重新建構索引。隨著表的增長,這逐漸使我的執行時間越來越長。在載入實用程序的 DB2 文件中,它顯示了延遲選項的索引模式,聽起來好像跳過了該步驟(建議您在最後一次載入時進行重建)。當我設置此選項時,兩個表的執行都出現以下錯誤…

SQL3214N 裝入操作失敗,因為表與 DEFERRED 索引方式不兼容。原因程式碼:“1”。

現在我已經瀏覽並查看了這張syscat.indexes桌子,兩張桌子都沒有“唯一索引”。兩者都有主鍵,只有一個具有唯一鍵,這提示了我上面的問題。

您如何確定表沒有唯一索引?主鍵和唯一約束通過唯一索引實現(除非是資訊約束,即未強制執行)。嘗試:

SELECT INDSCHEMA, INDNAME
FROM SYSCAT.INDEXES
WHERE UNIQUERULE IN ('U','P')
 AND TABSCHEMA = '...'
 AND TABNAME = '...'

文件說

重要的是要了解主鍵或唯一鍵約束與唯一索引之間沒有顯著差異。為了實現主鍵和唯一鍵約束的概念,數據庫管理器使用唯一索引和 NOT NULL 約束的組合

引用自:https://dba.stackexchange.com/questions/244907