Si el concepto de los índices basados en funciones es nuevo para ti, podrías tratar de indexar todo, pero eso es lo último que deberías hacer. La razón es que cada índice causa generalmente un mantenimiento. Los índices basados en funciones son particularmente problemáticos porque es muy fácil crear índices redundantes.
La búsqueda insensible entre
mayúscula y minúscula puede implementarse con la función
LOWER
:
SELECT first_name, last_name, phone_number
FROM employees
WHERE LOWER(last_name) = LOWER('winand')
Un índice sencillo no soporta ambos métodos para ignorar la
distinción entre mayúscula y minúscula. Se podría, obviamente, crear un
segundo índice sobre LOWER(last_name)
para esta sentencia,
pero eso significaría que la base de datos debería mantener dos índices
por cada insert
, update
, y delete
(ver también Capítulo 8, “Modificando los datos”). Para que con un índice sea
suficiente, se podría usar consistentemente la misma función a lo largo
de su aplicación.
Sugerencia
Unifica el camino de acceso; un índice puede ser usado por varias sentencias.
Aviso
A veces, las herramientas ORM utilizan UPPER
y
LOWER
sin dar a conocer al desarrollador. Hibernate,
por ejemplo, inyecta un LOWER
implícito para
las búsquedas sin distinciones entre mayúscula y minúscula.
Sugerencia
Se ha de tener siempre el objetivo de indexar el dato original así como la información más útil dentro de un índice.
Si te gusta mi manera de explicar, te encantará mi libro.