Einzelnen Beitrag anzeigen

omp

Registriert seit: 7. Apr 2012
63 Beiträge
 
#1

Komplexe SQL-Abfrage optimieren

  Alt 18. Feb 2025, 10:50
Datenbank: MS SQL • Version: 2022 • Zugriff über: FireDAC
Hallo. Wir haben ein Dokumentenarchiv mit einem einfachen Volltextindex. Die SQL-Abfrage sieht beispielsweise wie folgt aus:
Code:
SELECT * FROM document
WHERE docid IN (SELECT id.docid FROM ftiwid id INNER JOIN ftiword w ON id.wordid = w.wordid WHERE (w.word LIKE {s gesuchteswort%}) )
Kommt ein neues Dokument in die Datenbank, muss dieses über die docid der Abfrage hinzugefügt werden:
Code:
SELECT * FROM document
WHERE docid=200001 
OR docid IN (SELECT id.docid FROM ftiwid id INNER JOIN ftiword w ON id.wordid = w.wordid WHERE (w.word LIKE {s gesuchteswort%}) )
Tests mit Datenbank bis ca. 80.000 Datensätzen sind problemlos und schnell. In einem Archiv mit 200.000 Zeilen tritt jetzt aber ein echtes Problem auf:
Die erste Abfrage ist ok und in 2 Sekunden fertig.
Die zweite Abfrage mit "WHERE docid=200001 OR" benötigt aber über eine Stunde Zeit!

Hat jemand eine Idee, was dahintersteckt?
Besten Dank, Harald
Harald
  Mit Zitat antworten Zitat