Dzisiaj Siedem baz danych w siedmiu tygodniach zapoznało mnie z indeksami poszczególnych operatorów.
Możesz indeksować ciągi znaków dla wzorca pasującego do poprzednich zapytań, tworząc
text_pattern_ops
indeks klasy operatora, o ile wartości są indeksowane małymi literami.
CREATE INDEX moves_title_pattern ON movies (
(lower(title) text_pattern_ops);
Użyliśmy,
text_pattern_ops
ponieważ tytuł jest typu tekstowego. Jeśli trzeba indeks varchars, znaków lub nazw, użyj pokrewnych ops:varchar_pattern_ops
,bpchar_pattern_ops
, iname_pattern_ops
.
Uważam ten przykład za bardzo mylący. Dlaczego warto to zrobić?
Jeśli kolumna zawiera tekst, to czy inne typy (varchar, char, name) nie będą rzutowane na tekst przed użyciem jako wartości wyszukiwania?
Jak ten indeks zachowuje się inaczej niż indeks używający domyślnego operatora?
CREATE INDEX moves_title_pattern ON movies (lower(title));