資料庫會索引鍵強制大小上限

資料庫會對索引鍵(亦稱為複合索引)強制大小上限。

若為 Microsoft SQL Server:
索引鍵的欄位數上限是 16。
如果是佇列索引,欄位數上限是 15;工作流程系統使用一個欄位。
如果是名冊索引,欄位數上限是 16。
如果是事件日誌索引,使用者欄位數上限是 14;工作流程系統會將 F_TimeStamp 和 F_SeqNumber 新增至每一個索引。
索引鍵的大小上限是 900 個位元組。

在決定複合索引鍵的大小時,Microsoft SQL Server 會將所有固定直欄及所有可變直欄下限加總,以決定複合索引是否在容許的索引大小上限之內。 然而,如果表格中已有資料,且直欄中的現有資料容許索引的總位元組數大於大小上限,則無法建立索引。 此外,如果建立索引之後插入(或更新)的資料容許索引上限值超過上限值大小,屆時將發生錯誤。

例如:您可以定義由大小為 500 個位元組的 column1 和大小為 500 個位元組的 column2 組成的索引。 如果您將 500 個位元組的資料放在 column1 中,並將 500 個位元組的資料放在 column2 中,會發生錯誤。如果您將 100 個位元組的資料放在 column1 中,並將 100 放在 column2 中,則不會有錯誤。

若為 Oracle:
索引鍵的欄位數上限是 32。
如果是佇列索引,欄位數上限是 31;工作流程系統使用一個欄位。
如果是名冊索引,欄位數上限是 32。
如果是事件日誌索引,使用者欄位數上限是 30;工作流程系統會將 F_TimeStamp 和 F_SeqNumber 新增至每一個索引。
索引鍵的大小總計上限是資料庫區塊大小減去一些額外需要大小的 70%。

如果要決定 SQLPlus 中的資料庫資料區塊大小,請執行下列動作:
以 sysdba 身分登入。
在 SQL> 之後輸入 show parameters db_block_size。
在決定索引鍵的大小時,Oracle 伺服器會將所有可變長度欄位的已定義大小上限及所有固定長度欄位的大小加總。

 

mariaDB、MySQL

索引的最大長度。 MyISAM允許1000個字元; InnoDB允許767字元

 

若為 DB2R:
索引鍵的欄位數上限是 64。
如果是佇列索引,欄位數上限是 63;工作流程系統使用一個欄位。
如果是名冊索引,欄位數上限是 64。
如果是事件日誌索引,使用者欄位數上限是 62;工作流程系統會將 F_TimeStamp 和 F_SeqNumber 新增至每一個索引。
唯一索引鍵的合併長度總計上限是 8192。
 

  • Top