sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres LIKE '...%' bruger ikke indeks

PostgreSQL vil gøre dette, hvis du bygger indekset med text_pattern_ops operatør, eller hvis du bruger C-sorteringen.

Hvis du bruger en tilfældig anden sammenstilling, kan PostgreSQL ikke udlede meget af noget om det. Bemærk dette i den meget almindelige "en_US.utf8"-sortering.

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

Hvilket så naturligvis fører til dette forkerte svar med din forespørgsel:

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. mange-til-mange forhold i doktrinen

  2. Hvordan skriver man DataFrame til postgres-tabel?

  3. Få alle indsatte id'er, når du indsætter flere rækker ved hjælp af en enkelt forespørgsel

  4. mysqlimport uden mysql installation?