Моя таблица содержит около 7M записей, и ее структура выглядит следующим образом:
create table Locations (LocationID (PK, int, not null),LocationName varchar(100) NOT NULL /*e.g. 'Paris'*/, ItemsNo (int, null), ICode char(1) null /*e.g. 'C'*/, LocationExtended nvarchar(max) null)
HTML-версия здесь: "создать таблицу Locations (LocationID (PK, int, not null), LocationName varchar (100) NOT NULL, ItemsNo (int, null), ICode char (1) null, LocationExtended nvarchar (max) null) "
Мой запрос действительно прост:
select top 20 LocationName, ItemsNo from Locations where contains(LocationExtended,@SearchTerms) and Icode='C' and ItemsNo is not null order by ItemsNO desc
HTML версия здесь: "выберите топ-20 LocationName, ItemsNo из Locations, где содержится (LocationExtended, @ SearchTerms) и Icode = 'C', а ItemsNo не является нулевым порядком по ItemsNO desc"
Конечно, существует полнотекстовый каталог для поля LocationExtended.
Теперь давайте немного поиграем с параметром @SearchTerms и с индексами:
Если у меня есть только кластерный индекс вСтолбец LocationID Я получаю время выполнения FAST для @ SearchTerms = 'Paris и France' (поскольку в поле LocationExtended очень мало записей, содержащих ключевые слова Paris и France) и время выполнения SLOW для @ SearchTerms = 'Франция (потому что в поле LocationExtended есть тысячи записей для каждого города во Франции).
Другими словами, результаты выглядят примерно так: for @ SearchTerms = 'Paris and France' возвращает: "Paris"and" Paris Paris "и" South Paris "для @ SearchTerms =" France "возвращает" Paris "," Nice "," Marseille ", .... и т. д.
, потому что мне нужны обаСценарии быстрого запуска Я создал некластеризованный индекс в таблице Locations со столбцами Icode и ItemsNO и столбцом LocationID.
Создав этот новый индекс, я получил обратные результаты: супер быстрое время выполнения для @ SearchTerms = 'Франция ', но медленные времена для @ SearchTerms =' Париж и Франция '
Теперь я застрял в этой точке.
Я упоминаю, что я использую SQL Server 2008 на Windows 2003 Server
Любая идея была бы оценена.Большое спасибо.