PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Prawidłowy indeks pełnotekstowy Rails/PostgreSQL/pg_search

To wyrażenie:

to_tsvector('simple', (COALESCE(title::TEXT), ''))

nie jest sargable w stosunku do Twojego indeksu.

Powinieneś zadeklarować indeks na dokładnie tym wyrażeniu, które jest użyte w zapytaniu:

CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', COALESCE(title::TEXT,'')))

(lub niech ruby ​​wygeneruje wyrażenie, które jest używane w indeksie).

Jeśli chcesz indeksować wiele kolumn, po prostu je połącz:

CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', title || ' ' || product_type || ' ' || platform_id))

ale znowu, Ruby powinien filtrować dokładnie to samo wyrażenie, aby indeks mógł być używany.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak poprawnie określić schemat bazy danych w wiosennym rozruchu?

  2. Reprezentowanie przyszłości w PostgreSQL

  3. Jak posortować wynik z string_agg()

  4. Natywne zapytanie operatora JPA i JSON

  5. nie rozumiem json_agg w tym kontekście