Ich spiele ein wenig mit Volltextindizes in Sql Server 2008. Ich erstellte den Index, Katalog und füllen Sie es voll. Meine Tabelle hat fast 400.000 Datensätze. Mein Volltextindex ist in einer varchar (Max) -Spalte definiert (nennen wir es jetzt Text). Ich führe die folgende Abfrage aus:SQL Server 2008 FullText Optimierung
Wählen * aus MyTable wo enthält (Text, 'Haus').
Diese Abfrage gibt in 14 Sekunden fast 20.000 Datensätze zurück. Ich denke das ist sehr langsam. Aber, wenn ich diese Abfrage ausführen:
select Count (*) von MyTable wo enthält (Text, 'Haus')
Es dauert nur 1 Sekunde, um das Ergebnis zu zeigen.
Ich habe gesucht und soweit ich sehen kann, ist der Ausführungsplan der gleiche für beide Abfragen. Warum braucht Sql Server so viel, um das erste Abfrageergebnis anzuzeigen?
Was habe ich schon getan:
kaufte ich eine SSD und sowohl MDF- und LDF auf dieser Platte setzen. Aber wenn ich die erste Abfrage ausführe, kann ich sehen, dass Protokolle und eine tmp-Datenbank auf meiner Festplatte erstellt werden (nicht in der SSD). Meine SSD ist D: und alle temporären Dateien werden bei C: erstellt.
Ist das so lang, weil sql diese Dateien benötigt, um das Enterprise Manager-Ergebnisraster zu füllen? Was kann ich tun, um die Datenbank zu optimieren? Ich brauche die Abfragen wirklich in weniger als 2 Sekunden.
Wird alles auf einer einzelnen Maschine ausgeführt oder übertragen Sie Daten über ein Netzwerk? –
Noch eine Frage: Diese 14 Sekunden-Zahl, ist das die Zeit, die benötigt wird, um die Ergebnismenge an Ihr SSMS-Fenster zu senden, oder die Zeit, die es braucht, um Werte zu zeigen? –
Es ist die Zeit, die es dauert, bis der Ergebnissatz an mein SSMS zurückgegeben wird. –