PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

kueri jauh lebih lambat dengan pernyataan siap dibandingkan dengan pernyataan

Pernyataan yang Anda siapkan menampilkan full_address menjadi text (Jenis teks bawaan Postgres), sedangkan tampaknya tabel Anda dibuat dengan citext (tidak peka huruf besar/kecil) jenis teks (atau, Anda tidak memiliki indeks pada full_address::text ). Mungkin coba buat indeks di full_address::text dan lihat apakah pernyataan yang Anda siapkan akan sesuai.

Pilihan lainnya adalah menggunakan text ketik full_address kolom, lalu buat indeks fungsional di lower(full_address) -- kelezatan opsi tersebut bergantung pada kebutuhan Anda.

Saya pikir bagian dari masalahnya adalah JDBC tidak tahu tentang citext ketik jadi kecuali Anda bisa meminta JDBC untuk mengirim alamat Anda ke database sebagai citext ketik, itu akan ditafsirkan oleh perencana kueri sebagai text , seperti setString() . Anda metode ini mungkin.

Menariknya, saya mengalami masalah serupa baru-baru ini

Pengungkapan:Saya bekerja untuk EnterpriseDB (EDB)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Menggunakan pernyataan AND di LEFT JOIN tidak berfungsi seperti yang diharapkan

  2. Cara mengelompokkan hasil berdasarkan jumlah hubungan

  3. Menemukan poligon tetangga - kueri postgis

  4. Bagaimana cara menggunakan kembali hasil untuk klausa SELECT, WHERE dan ORDER BY?

  5. Hubungkan wadah buruh pelabuhan postgreSQL+postGIS dari jaringan lokal saya