sql >> Database teknologi >  >> RDS >> PostgreSQL

forespørgsel meget langsommere med forberedt erklæring sammenlignet med erklæring

Din forberedte erklæring afgiver full_address ind i text (Postgres' indbyggede teksttype), hvorimod det ser ud til, at din tabel er oprettet med en citext (uafhængig af store og små bogstaver) teksttype (eller du mangler et indeks på full_address::text ). Prøv måske at oprette et indeks på full_address::text og se, om din forberedte erklæring kan opfange den.

En anden mulighed er at bruge en text skriv for full_address kolonne, og opret derefter et funktionelt indeks på lower(full_address) -- smagen af ​​denne mulighed afhænger af dine krav.

Jeg tror, ​​at en del af problemet er, at JDBC ikke kender til citext skriv det, medmindre du kan få JDBC til at sende din adresse til databasen som en citext type, vil det blive fortolket af forespørgselsplanlæggeren som text , ligesom din setString() metode gør det sandsynligvis.

Interessant nok løb ind i et lignende problem for nylig

Offentliggørelse:Jeg arbejder for EnterpriseDB (EDB)




  1. At finde en 'run' af rækker fra et ordnet resultatsæt

  2. Migrering af SQL Server 2008 DB til Postgres

  3. MySQL-tjenesten på den lokale computer startede og stoppede derefter

  4. Minimal logning med INSERT...SELECT og hurtig indlæsningskontekst