sql >> Databasteknik >  >> RDS >> Oracle

Hur skapar man textindex för '%abc%'-sökning?

Jag skulle använda detta (ställ in min och maxlängd till lämpliga värden)

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')

Parametrarna förklaras här Oracle Text Reference

och se den här frågan om hur du hanterar uppdateringen och hur indexet kanske inte är snabbare än en fullständig genomsökning med data med hög kardinalitet:

PL/SQL Performance Tuning för LIKE '% ...%' Jokerteckenfrågor



  1. Gå med i frågan med endast kolumner som har alla värden i "in"-satsen

  2. MySQL Prepared Statement - Hur man går igenom

  3. Visualisera tipppunkten med Plan Explorer

  4. Entity Framework core - Innehåller är skiftlägeskänsligt eller skiftlägesokänsligt?