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

Има ли начин за полезно индексиране на текстова колона, съдържаща модели на регулярен израз?

Няма начина .

Индексите изискват IMMUTABLE изрази. Резултатът от вашия израз зависи от входния низ. Не виждам друг начин освен да оценя израза за всеки ред, което означава последователно сканиране.

Свързан отговор с повече подробности за IMMUTABLE ъгъл:

Просто няма решение за вашия случай, което е невъзможно за индексиране. Индексът трябва да съхранява постоянни стойности в своите кортежи, което просто не е налично, тъй като получената стойност за всеки ред се изчислява въз основа на входа. И не можете да трансформирате входа, без да погледнете стойността на колоната.

Използването на индекс на Postgres е обвързано с оператори и индексира само изрази left на оператора може да се използва (поради същите логически ограничения). Още:

Много оператори дефинират COMMUTATOR което позволява на планиращия/оптимизатора на заявки да обърне индексираните изрази наляво. Прост пример:Комутаторът на = е = . комутатора на > е < и обратно. Документацията:

Операторът за съответствие на регулярния израз ~ отново няма комутатор, защото това не е възможно. Вижте сами:

SELECT oprname, oprright::regtype, oprleft::regtype, oprcom
FROM   pg_operator
WHERE  oprname = '~'
AND    'text'::regtype IN (oprright, oprleft);

 oprname | oprright |  oprleft  | oprcom
---------+----------+-----------+------------
 ~       | text     | name      | 0
 ~       | text     | text      | 0
 ~       | text     | character | 0
 ~       | text     | citext    | 0

И вижте ръководството тук:

Опитвал съм преди и трябваше да приема, че е невъзможно за принципал .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА:заявката няма местоназначение за данните за резултатите

  2. PostgreSQL заявка с генерирани колони

  3. Как да използвам схеми в Django?

  4. Кои специфични изключения представляват неуспешна сериализация, когато Django използва ниво на изолация на сериализуема транзакция с postgresql?

  5. Как да създадете sql скрипт на схема на база данни на postgres?