Hvordan performer query'en:
SELECT DocumentId, Description, DocumentStatus.[Name] FROM Documents
INNER JOIN DocumentStatus ON Documents.StatusId = DocumentStatus.StatusId
WHERE CONTAINS(DocumentStatus.*, '"*kontor*"')
Hvis denne query går hurtigt bør du i virkeligheden blot lave din query som
en UNION af ovenstående og din første query.
Kender du til query analyser? Hvad giver den for en query plan? Og er der
forskel på den "estimated query plan" og "actual query plan"?
Et hurtigt langskud: Prøv lige at skrive "INNER LOOP JOIN" i ovenstående
query og se om det giver en positiv forskel.
Bemærk iøvrigt at SQL Server 2005 er væsentligt bedre til full-text
operationer i forhold til SQL Server 2000.
Jesper
"news.tele.dk" <m@ds.dk> wrote in message
news:4a13f645$0$15888$edfadb0f@dtext01.news.tele.dk...
> Den hurtige søgning er den jeg har skrevet (0 sek):
>
> SELECT DocumentId, Description, DocumentStatus.[Name] FROM Documents
> INNER JOIN DocumentStatus ON Documents.StatusId = DocumentStatus.StatusId
> WHERE CONTAINS(Documents.*, '"*kontor*"')
>
> Den langsomme er den samme med et OR fra DocumentStatus tabellen (30 sek):
>
> SELECT DocumentId, Description, DocumentStatus.[Name] FROM Documents
> INNER JOIN DocumentStatus ON Documents.StatusId = DocumentStatus.StatusId
> WHERE CONTAINS(Documents.*, '"*kontor*"') OR CONTAINS(DocumentStatus.*,
>>> '"*kontor*"')
>
> Beklager den kryptiske forklaring.
>
> --
> MKJ
>
> "Gert Krabsen" <fjernkrabsen@fjernkrabsenfjern.dk> wrote in message
> news:4a12d92a$0$90269$14726298@news.sunsite.dk...
>> news.tele.dk skrev:
>>> Hej
>>>
>>> Jeg har en ms sql 2000 database med en Documents table der indeholder ca
>>> 100000 records og en DocumentStatus tabel der indeholder 7 records. Med
>>> nedenstående query kan jeg gennemsøge mit fritekstkatalog, finde de ca.
>>> 500 hits på 0.01 sek. Hvis jeg tilføjer "OR CONTAINS(DocumentStatus.*,
>>> '"*kontor*"')" til denne query, tager det pludselig ca. 30 sek. at
>>> gennemsøge fritekstkataloget. Hvad skyldes det dog?
>>>
>>>
>>>
>>> SELECT DocumentId, Description, DocumentStatus.[Name] FROM Documents
>>> INNER JOIN DocumentStatus ON Documents.StatusId =
>>> DocumentStatus.StatusId
>>> WHERE CONTAINS(Documents.*, '"*kontor*"')
>>>
>>> --
>>> MKJ
>>>
>>
>> Hvordan ser den 'hurtige' søgning ud?
>> Vi er nødt til at kunne se de to alternativer for at se forskellen
>