我正在寻找在长列上创建索引的替代方法:
create table line
(
field_key integer not null,
value varchar(4000),
...
);
create index key_value_idx on line (field_key, value);
结果DB2 SQL Error: SQLCODE=-614, SQLSTATE=54008
。文档说:The sum of the stored lengths of the specified columns must not be greater than 1024
。对于 MySQL 中的这种情况,有语法:
create index key_value_idx on line (field_key, value(1000));
并且 HSQLDB 可以不受任何限制地工作。
DB2 的类似物是什么?
下面是关于 DB2的CREATE INDEX语句的信息。您可能还想查看这些有关设计索引和索引空间要求的链接,因为它们还处理您关于索引页面空间的哪些因素的问题。
根据最后一个链接,在我看来,索引的页面大小将是您的列长度 + 索引开销。这可能会使您超出表格的页面大小。(也许这就是这里发生的事情。)您也可以尝试将表放在更大的表空间中。它也可以将索引放置在更大的页面大小中。
如果您打算将索引用于相等,您可以添加一个校验和计算列:
然后,您可以选择: