PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

truy vấn chậm hơn nhiều với readyStatement so với câu lệnh

Bản sao kê đã chuẩn bị của bạn truyền full_address thành text (Kiểu văn bản tích hợp của Postgres), trong khi có vẻ như bảng của bạn được tạo bằng citext (phân biệt chữ hoa chữ thường) loại văn bản (hoặc bạn thiếu chỉ mục trên full_address::text ). Có thể thử tạo chỉ mục trên full_address::text và xem liệu tuyên bố đã chuẩn bị của bạn có phù hợp với nó hay không.

Một tùy chọn khác là sử dụng text nhập cho full_address và sau đó tạo chỉ mục chức năng trên lower(full_address) - độ ngon của tùy chọn đó phụ thuộc vào yêu cầu của bạn.

Tôi nghĩ rằng một phần của vấn đề là JDBC không biết về citext nhập như vậy trừ khi bạn có thể yêu cầu JDBC gửi địa chỉ của bạn đến cơ sở dữ liệu dưới dạng citext nhập, nó sẽ được công cụ lập kế hoạch truy vấn hiểu là text , giống như setString() của bạn phương pháp có thể có.

Thật thú vị, gần đây tôi gặp phải sự cố tương tự

Tiết lộ:Tôi làm việc cho 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:ST_GeomFromText (không xác định) không tồn tại

  2. Django ORM để lại các kết nối không hoạt động trên Postgres DB

  3. Cách đặt đường dẫn nút cho nodejs (Ubuntu)

  4. Tại sao di chuyển theo trình tự tạo bảng nhưng mô hình không thể kết nối với cơ sở dữ liệu

  5. Làm cách nào để xử lý dữ liệu được xếp hạng x / y trong PostgreSQL?