sql performance indexing db2

sql - ¿Cómo reacciona DB2 sin el índice funcional?



performance indexing (2)

Tengo una mesa como

Tabla 1:

col1 col2 col3

y tiene un índice sobre col3. Si selecciono los datos de la tabla con la siguiente consulta.

SELECT * FROM Table1 WHERE LCASE(col3) =''abcde''

¿El índice ayuda sobre el rendimiento?


Respuesta corta: No.

Respuesta larga: No.

Imagine los siguientes contenidos en su col3:

Foo bar baz foo BAR

El índice en col3 sabría este orden:

BAR Foo bar baz foo

Sin embargo, el orden de la consulta lcase (col3) sería

bar BAR baz foo Foo

completamente diferente del índice, por lo que el índice es de uso limitado.

Sin embargo, puede agregar un campo creado automáticamente con la minúscula a su tabla:

ALTER TABLE Table1 ADD COLUMN col3_lcase VARCHAR(?) GENERATED ALWAYS AS ( LCASE(col3) ); CREATE INDEX col3_lcase_idx ON Table1 ( col3_lcase );

el seleccionar arriba usaría el índice col3_lcase_idx .