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

Смесени заявки срещу индекс на пълен текст

Не вярвам, че трябва да имате някакъв проблем, ако разбирам правилно въпроса ви. Често комбинирам пълен текст и b-дърво със страхотни резултати. Когато се извършва пълнотекстово търсене, той разглежда всеки разделен "термин" като индекс, точно както би индексирана колона само с един термин (плюс или малко sql статистика). Така или иначе, SQL трябва да разбере своя път на изпълнение. Търсенето на пълен текст не благоприятства сравняването на целочислени/датни стойности - повече за съвпадение на низове от разделени данни.

Предполагам, че бихте искали да продължите да използвате ефективността на концепцията на b-дървото във ваша полза. Търсенето в индекса на пълен текст в каталога ми се струва много по-заобиколно търсене, макар и много по-изгодно в ситуации, когато се използва "LIKE" за анализиране/сравняване на низове.

Това, което правя е:

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

(вижте тази статия за msdn за информация за синтаксиса )

P.S. когато целочислени данни индексирате с пълен текст, изключете списъка за спиране, така че тези стойности да не бъдат игнорирани при индексирането на каталога.

Дано нещо от това помогне! (Никой не е отговорил, затова реших да споделя опита си)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да изтрия с помощта на INNER JOIN със SQL Server?

  2. Запитване до различна таблица въз основа на параметър

  3. SQL единична колона, разделена на множество колони

  4. Пейджинг от страна на сървъра в SQL Server

  5. SQL Server:невалидно име на обект при изпълнение на заявка