sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres LIKE '...%' använder inte index

PostgreSQL kommer att göra detta om du bygger indexet med text_pattern_ops operatorn, eller om du använder C-sorteringen.

Om du använder någon slumpmässig annan sammanställning, kan PostgreSQL inte härleda mycket av någonting om det. Observera detta i den mycket vanliga "en_US.utf8"-kollationen.

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

Vilket då naturligtvis leder till detta felaktiga svar med din fråga:

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. MYSQL Välja fram- och återgående data?

  2. Vid infogning:kolumnreferenspoängen är tvetydig

  3. ADO .NET vs. SQL Server Management Studio - ADO presterar sämre

  4. Upptäck datatyp när du använder fetch_array med MySQLi