Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytania mieszane względem indeksu pełnotekstowego

Nie sądzę, że powinieneś mieć jakiś problem, jeśli dobrze rozumiem twoje pytanie. Często łączę pełny tekst i b-drzewo z doskonałymi wynikami. Podczas wyszukiwania pełnotekstowego każdy oddzielony „termin” jest traktowany jako indeks, tak jak w przypadku indeksowanej kolumny zawierającej tylko jeden termin (podaj lub weź trochę statystyk sql). Tak czy inaczej, SQL musi ustalić swoją ścieżkę wykonania. Wyszukiwanie pełnotekstowe nie faworyzuje porównywania wartości całkowitych/dat — więcej w przypadku dopasowywania ciągów danych rozdzielanych.

Wyobrażam sobie, że chciałbyś nadal wykorzystywać wydajność koncepcji b-drzewa na swoją korzyść. Wydaje mi się, że przeszukiwanie indeksu katalogu pełnotekstowego jest znacznie bardziej okrężnym przeszukiwaniem, chociaż o wiele bardziej korzystne w sytuacjach, w których do analizowania/porównywania ciągów używa się funkcji „LUBIE”.

Co robię to:

 SELECT * FROM MyTable
  WHERE CONTAINS(columnName, '"Toy Dog" OR "live animal"')
    AND start_date > ###;

(zobacz ten artykuł msdn, aby uzyskać informacje o składni )

PS podczas indeksowania pełnego tekstu danych całkowitych, wyłącz stoplistę, aby te wartości nie były ignorowane w indeksowaniu katalogu.

Mam nadzieję, że to pomoże! (Nikt nie odpowiedział, więc pomyślałem, że dam swoje doświadczenie)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Analiza MS SQL Server dla tych, którzy widzą go po raz pierwszy

  2. określenie zestawu znaków tabeli/bazy danych?

  3. połącz dwie identyczne struktury tabel z różnymi danymi

  4. SQL Server - po wstawieniu wyzwalacza - zaktualizuj kolejną kolumnę w tej samej tabeli

  5. Obsługuj wiele aktualizacji bazy danych z c# w SQL Server 2008