sql >> Database >  >> RDS >> PostgreSQL

Postgres LIKE '...%' gebruikt geen index

PostgreSQL doet dit als u de index maakt met text_pattern_ops operator, of als u de C-sortering gebruikt.

Als je een willekeurige andere sortering gebruikt, kan PostgreSQL er niet veel over afleiden. Let hierop, in de veel voorkomende "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

Wat dan natuurlijk leidt tot dit verkeerde antwoord met uw vraag:

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. Kan postgresql.service niet starten?

  2. Slaapstand verslikt zich in ontbrekende rijen bij het omgaan met een verouderde database

  3. Hoe verhoudt de FROM-kant van een UPDATE zich tot de tabel die is bedoeld voor UPDATE?

  4. Hoe SQL-afstemming in Oracle te doen?