Hoy Seven Databases en Seven Weeks me presentó los índices por operador.
Puede indexar cadenas para patrones que coincidan con las consultas anteriores creando un
text_pattern_ops
índice de clase de operador, siempre que los valores se indexen en minúsculas.
CREATE INDEX moves_title_pattern ON movies (
(lower(title) text_pattern_ops);
Usamos el
text_pattern_ops
porque el título es de tipo texto. Si necesita índice varchars, caracteres, o nombres, utilice las operaciones relacionadas:varchar_pattern_ops
,bpchar_pattern_ops
, yname_pattern_ops
.
El ejemplo me parece realmente confuso. ¿Por qué es útil hacer esto?
Si la columna es texto de tipo, ¿los otros tipos (varchar, char, name) no se convertirán en texto antes de usarse como valor de búsqueda?
¿Cómo se comporta ese índice de manera diferente al que usa el operador predeterminado?
CREATE INDEX moves_title_pattern ON movies (lower(title));