Warum verlangsamen sich SQL FullText-Abfragen, wenn Sie ODER?

n SQL Server (2008) habe ich einen FullText-Index für zwei Spalten, nennen Sie sieTable1.FirstNames undTable2.LastNames. Nachdem ich einige Abfragen profiliert hatte, stellte ich die folgenden Ergebnisse fest:

SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE CONTAINS(FirstNames, 'Bob') OR CONTAINS(LastNames, 'Bob')

=> 31 197 ms

SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE (FirstNames LIKE '%Bob%') OR CONTAINS(LastNames, 'Bob')

=> 1941 ms

SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE CONTAINS(FirstNames, 'Bob') OR LastNames LIKE '%Bob%'

=> 3201ms

SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE CONTAINS(FirstNames, 'Bob')

=> 565 ms

SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE FirstNames LIKE '%Bob%'

=> 670 ms

SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE CONTAINS(LastNames, 'Bob')

=> 17ms

SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE LastNames LIKE '%Bob%'

=> 3ms

Dieses Verhalten bleibt auch dann bestehen, wenn ich den FullText-Index neu erstelle.

FullText ist normalerweise viel schneller als eine LIKE-Abfrage über große Datenmengen in einer bestimmten Sprache. Warum verlangsamen sich die Abfragegeschwindigkeiten jedoch um eine Größenordnung, wenn ich zwei FullText-Klassen ODER zusammenstelle?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage