El índice sobre LAST_NAME
ha mejorado considerablemente
el rendimiento, pero eso requiere hacer la búsqueda con el mismo tipo
(minúscula/mayúscula) con el que está almacenado en la base de datos. Esta
sección explica cómo aumentar las restricciones sin bajar el
rendimiento.
- Db2 (LUW)
Db2 soporta los índices basados en funciones zOS
por un tiempo, pero solamente desde
la versión 10.5 en LUW. El uso de funciones definidas por
usuarios dentro de un índice no está permitido.
La solución alternativa es crear una columna real en la tabla
incluyendo el resultado de la función o de la expresión. La columna
debe ser mantenida por un trigger o por una capa aplicativa; de
hecho, cualquier cosa es más apropiada. La nueva columna puede ser
indexada. El filtro where
debe
usar la nueva columna (sin la expresión).
- MySQL
MySQL sí distingue mayúsculas y minúsculas por defecto, pero
eso puede ser
controlado a nivel de las columnas. A partir de la versión
5.7, MySQL puede crear índices sobre
columnas generadas.
La solución alternativa para las versiones anteriores es crear
una columna real en la tabla incluyendo el resultado de la función o
de la expresión. La columna debe ser mantenida por un trigger o por
una capa de la aplicación. La nueva columna puede ser indexada. El
filtro where
debe usar la nueva
columna (sin la expresión).
- Oracle
La base de datos Oracle soporta los índices basados en
funciones desde la versión 8.i. Se agregaron
adicionalmente columnas virtuales en la versión 11g.
- PostgreSQL
PostgreSQL soporta por completo los
índices basados sobre expresiones desde la versión 7.4 (parcialmente soportada desde la
versión 7.2)
- SQL Server
SQL Server soporta las
columnas virtuales ("computed columns") que pueden ser
indexadas desde la versión 2000.
Si te gusta mi manera de explicar, te encantará mi libro.