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

query molto più lenta con prepareStatement rispetto a statement

La tua dichiarazione preparata genera full_address in text (tipo di testo incorporato di Postgres), mentre sembra che la tua tabella sia stata creata con un citext tipo di testo (senza distinzione tra maiuscole e minuscole) (oppure, non hai un indice su full_address::text ). Forse prova a creare un indice su full_address::text e vedi se la tua dichiarazione preparata lo raccoglierà.

Un'altra opzione è usare un text digita per il full_address colonna, quindi creare un indice funzionale su lower(full_address) -- l'appetibilità di tale opzione dipende dalle tue esigenze.

Penso che parte del problema sia che JDBC non conosce il citext digita così a meno che tu non riesca a convincere JDBC a inviare il tuo indirizzo al database come citext digita, verrà interpretato dal pianificatore di query come text , proprio come il tuo setString() il metodo probabilmente lo fa.

È interessante notare che mi sono imbattuto di recente in un problema simile

Divulgazione:lavoro per EnterpriseDB (EDB)