Estou procurando alternativa para criar índice em coluna longa:
create table line
(
field_key integer not null,
value varchar(4000),
...
);
create index key_value_idx on line (field_key, value);
resultados DB2 SQL Error: SQLCODE=-614, SQLSTATE=54008
. A documentação diz: The sum of the stored lengths of the specified columns must not be greater than 1024
. Para tais casos no MySQL existe a sintaxe :
create index key_value_idx on line (field_key, value(1000));
e o HSQLDB simplesmente funciona sem quaisquer limitações.
Qual é o análogo para DB2?
Aqui estão as informações sobre a instrução CREATE INDEX para DB2. Você também pode verificar esses links sobre como criar índices e requisitos de espaço para índices , pois eles também lidam com sua pergunta sobre quais fatores no espaço da página de índice.
Com base no último link, parece-me que o tamanho da página para o índice seria o comprimento da coluna + a sobrecarga do índice. Isso pode levar você além do tamanho da página da sua tabela. (Talvez seja isso que está acontecendo aqui.) Você também pode tentar colocar sua mesa em um tablespace maior. Pode colocar o índice em um tamanho de página maior também.
Se você planeja usar o índice para igualdade, pode adicionar uma coluna computada de soma de verificação:
Você pode então selecionar como: