CREATE UNIQUE INDEX idx_textkey
ON myDB."TX_TEXTKEYS"
USING btree
(lower(textkey::text) text_pattern_ops);
Query mit Operator “=” im where
explain select * from archiv9."TX_TEXTKEYS" t
where lower(t.textkey) = 'asdasd'
führt zu Seq Scan on “TX_TEXTKEYS” t
Query mit Operator “LIKE” im where
explain select * from archiv9."TX_TEXTKEYS" t
where lower(t.textkey) like 'asdasd'
führt zu Index Scan on idx_textkey …
Ich vermutete, dass (mit Verlaub) dieser Unsinn mit der Operator-Klasse zusammenhaengt. Leider brachte varchar_pattern_ops das gleiche Ergebnis.
Gibts ne Operator-Klasse fuer die beide Varianten auf dem Index operieren wuerden? Auf keinen Fall aber will ich irgendeine Entschuldigung hören, warum obiges angeblich “richtig” sei .
Ob das ein Bug ist oder nicht, kannst du heruasfinden, indem du einen Bugeport bei den
Entwicklern von PG einreichst.
Das kannst du hier tun: PostgreSQL: Report a bug