Ihre vorbereitete Anweisung wandelt full_address
um in text
(Postgres eingebauter Texttyp), während Ihre Tabelle anscheinend mit einem citext
erstellt wird (Groß-/Kleinschreibung beachten) Texttyp (oder Ihnen fehlt ein Index für full_address::text
). Versuchen Sie vielleicht, einen Index für full_address::text
zu erstellen und sehen Sie, ob Ihre vorbereitete Erklärung es abholen wird.
Eine andere Möglichkeit ist die Verwendung eines text
Geben Sie für full_address
ein Spalte und erstellen Sie dann einen funktionalen Index für lower(full_address)
-- die Schmackhaftigkeit dieser Option hängt von Ihren Anforderungen ab.
Ich denke, dass ein Teil des Problems darin besteht, dass JDBC den citext
nicht kennt Geben Sie so ein, es sei denn, Sie können JDBC dazu bringen, Ihre Adresse als citext
an die Datenbank zu senden Typ, wird er vom Abfrageplaner als text
interpretiert , genau wie Ihr setString()
Methode tut es wahrscheinlich.
Interessanterweise bin ich vor kurzem auf ein ähnliches Problem gestoßen
Offenlegung:Ich arbeite für EnterpriseDB (EDB)