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

Postgres КАТО '...%' не използва индекс

PostgreSQL ще направи това, ако изграждате индекса с text_pattern_ops оператор, или ако използвате C collation.

Ако използвате произволно друго съпоставяне, PostgreSQL не може да извлече почти нищо за него. Наблюдавайте това в много често срещаното сортиране "en_US.utf8".

select * from (values ('03.000221.1'), ('03.0002212'), ('03.000221.3')) f(x) order by x;
      x      
-------------
 03.000221.1
 03.0002212
 03.000221.3

Което след това естествено води до този грешен отговор с вашата заявка:

select * from (values ('03.000221.1'), ('03.0002212'), ('03.000221.3')) f(id)
    where ((id >= '03.000221.'::text) AND (id < '03.000221.Z'::text))
     id      
-------------
 03.000221.1
 03.0002212
 03.000221.3



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кумулативна (текуща) сума с django orm и postgresql

  2. PostgreSQL заявка за преименуване и промяна на типа на колоната с една заявка

  3. Как да изпълните множество съединения с различни параметри в една заявка

  4. Името специална ключова дума ли е в PostgreSQL?

  5. Проблеми при настройката на персонализиран първичен ключ при миграция на Rails 4