Oggi Seven Database in Seven Weeks mi ha fatto conoscere gli indici per operatore.
È possibile indicizzare le stringhe per il modello che corrisponde alle query precedenti creando un
text_pattern_ops
indice di classe operatore, purché i valori siano indicizzati in minuscolo.
CREATE INDEX moves_title_pattern ON movies (
(lower(title) text_pattern_ops);
Abbiamo usato il
text_pattern_ops
perché il titolo è di tipo testo. Se avete bisogno di indicizzare VARCHAR, caratteri, o nomi, utilizzare i relativi ops:varchar_pattern_ops
,bpchar_pattern_ops
, ename_pattern_ops
.
Trovo l'esempio davvero confuso. Perché è utile farlo?
Se la colonna è di tipo testo, gli altri tipi (varchar, char, name) non verrebbero inseriti nel testo prima di essere usati come valore di ricerca?
In che modo tale indice si comporta in modo diverso da quello che utilizza l'operatore predefinito?
CREATE INDEX moves_title_pattern ON movies (lower(title));