PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

заявката е много по-бавна с подготовлена ​​декларация в сравнение с декларацията

Вашият подготвен израз прехвърля full_address в text (вграден тип текст на Postgres), докато изглежда, че вашата таблица е създадена с citext (нечувствителен към регистър) тип текст (или ви липсва индекс на full_address::text ). Може би опитайте да създадете индекс на full_address::text и вижте дали вашето подготвено изявление ще го вземе.

Друг вариант е да използвате text тип за full_address колона и след това създайте функционален индекс на lower(full_address) -- вкусът на тази опция зависи от вашите изисквания.

Мисля, че част от проблема е, че JDBC не знае за citext въведете, така че освен ако не можете да накарате JDBC да изпрати адреса ви в базата данни като citext тип, той ще бъде интерпретиран от програмата за планиране на заявки като text , точно като вашия setString() метод вероятно прави.

Интересното е, че наскоро се сблъсках с подобен проблем

Разкриване:Работя за 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. Spark SQL 2.0:NullPointerException с валидна заявка за PostgreSQL

  2. Как мога да изпълня pl/pgsql код без да създавам функция?

  3. PostgreSQL ILIKE заявка с SQLAlchemy

  4. Как да проверя дали архивът, произведен от pg_dump archive, е ОК и валиден?

  5. Запитване за „серия“ от последователни колони в Postgres