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

Стратегия за индексиране за различни комбинации от клаузи WHERE вкл. текстови модели

Вашият добавен предикат използва LIKE оператор:

AND network LIKE '%'

Действителният план на заявката зависи от това какво предавате вместо '%'. Но като цяло обикновените btree индекси са безполезни за това. Ще ви е необходим триграмен индекс или да използвате инфраструктурата за търсене на текст или подобни, в зависимост от това какви модели може да търсите.

Вижте:

Можете дори да комбинирате множество стратегии за индексиране. Пример:

Ако това трябва да бъде:

AND network = '<input_string>'

тогава по всякакъв начин действително използвайте = оператор, а не LIKE . Причини във възходящ ред на важност:

  1. по-кратко
  2. по-малко объркващо
  3. улеснява работата на планера на Postgres (много малко по-евтино)
  4. правилно

    Ако подадете низ със специални знаци по невнимание, може да получите неправилни резултати. Вижте:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да препратка към променлива на схема в plpgsql

  2. Присъединете се към множество маси, като използвате distinct on

  3. Slick 2.0 Общи CRUD операции

  4. NodeJS и Express:Грешка:самоподписан сертификат

  5. PostgreSQL еквивалент за SQL Server GROUP BY С РОЛЛУП