最大索引键大小
数据库会对索引键(也称为组合索引)强制施加最大大小。
对于 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> 中,输入显示参数 db_block_size。
要确定索引键的大小,Oracle Server 会计算所有可变长度字段的最大定义大小加上所有固定长度字段的大小所得到的总和。
对于 DB2®:
一个索引键中的最大字段数为 64。
- 对于队列索引,最大字段数为 63;工作流程系统仅使用一个字段。
- 对于登记簿索引,最大字段数为 64。
- 对于事件日志索引,用户字段的最大数目为 62;工作流程系统会对每个索引添加 F_TimeStamp 和 F_SeqNumber。
唯一索引键的组合总长度的最大值为 8192。