Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak utworzyć indeks tekstowy dla wyszukiwania „%abc%”?

Użyłbym tego (ustaw minimalną i maksymalną długość, aby uzyskać odpowiednie wartości)

BEGIN
    ctx_ddl.create_preference  ('FT_WL', 'BASIC_WORDLIST');
    ctx_ddl.set_attribute      ('FT_WL', 'substring_index',   'YES');
    ctx_ddl.set_attribute      ('FT_WL', 'prefix_index',      'YES');
    ctx_ddl.set_attribute      ('FT_WL', 'prefix_min_length', 1);
    ctx_ddl.set_attribute      ('FT_WL', 'prefix_max_length', 6);
  END;

CREATE INDEX fulltext_idx ON tmp_fulltext (fulltext)
 INDEXTYPE IS CTXSYS.CTXCAT
 PARAMETERS ('WORDLIST FT_WL')

Parametry są wyjaśnione tutaj Oracle Text Reference

i zobacz to pytanie, jak zarządzać odświeżaniem i jak indeks może nie być szybszy niż pełne skanowanie z danymi o wysokiej kardynalności:

Dostrajanie wydajności PL/SQL dla LIKE '% ...%' Zapytania z symbolami wieloznacznymi



  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 udostępniać dane w organizacji

  2. Uzyskaj różnicę między dwiema datami zarówno w miesiącach, jak i dniach w sql

  3. Oracle OCI, wiązanie zmiennych i zapytania takie jak ID IN (1, 2, 3)

  4. zaleta używania wyzwalacza do wypełniania klucza zastępczego w Oracle plsql

  5. SPRAWDŹ OGRANICZENIE ciągu, aby zawierał tylko cyfry. (Oracle SQL)