ChristianT
Neuer Benutzer
- Beiträge
- 2
Hallo Leute,
ich habe eine Datenbank im MS SQL Server 2022, die eine umfangreiche Tabelle, in derer es eine Volltext-Indizierte Spalte gibt, in welcher gesucht wird, enthält.
Die Abfrage 1 ist extrem schnell und bringt mir bei der Suche nach "spax*" das gewünschte Ergebnis.
Die Varianten 2 und 3, 4 sind sehr langsam und bringen mir das gleiche Ergebnis wie Variante 1, da die Abfrage "s*" natürlich auch in "spax*" enthalten ist.
Auch wenn ich das "spax*" und das "s*" vertausche bleibt es sehr langsam - siehe Variante 4.
Die "Bremse" ist natürlich die Abfrage nach "s*", weil es hierbei sehr viele Ergebnisse gibt.
Wenn der SQL-Server bei der linken Bedingung ("spax*") feststellt dass diese FALSE ergibt, dann sollte er ja gar nicht mehr die rechte Abfrage nach dem "AND" machen und somit sehr viel schneller sein.
Warum ist das so?
Gibt es eine Möglichkeit das zu unterbinden bzw. zu verbessern?
Ich kenne sowas zb. von Visual Basic-Programmiersprache, wo anstatt des Schlüsselwortes "AND" "ANDALSO" verwendet werden kann.
1) dauert unter einer Sekunde:
SELECT Tabelle where contains(Spalte, '"spax*"')
2) dauert ca. 20 Sekunden:
SELECT Tabelle where contains(Spalte, '"spax*" AND "s*"')
3) dauert ebenfalls ca. 20 Sekunden:
SELECT Tabelle where contains(Spalte, '"spax*"') AND contains(Spalte, '"s*"')
4) dauert ebenfalls ca. 20 Sekunden:
SELECT Tabelle where contains(Spalte, '"s*"') AND contains(Spalte, '"spax*"')
Vielen Dank im Voraus
Christian
ich habe eine Datenbank im MS SQL Server 2022, die eine umfangreiche Tabelle, in derer es eine Volltext-Indizierte Spalte gibt, in welcher gesucht wird, enthält.
Die Abfrage 1 ist extrem schnell und bringt mir bei der Suche nach "spax*" das gewünschte Ergebnis.
Die Varianten 2 und 3, 4 sind sehr langsam und bringen mir das gleiche Ergebnis wie Variante 1, da die Abfrage "s*" natürlich auch in "spax*" enthalten ist.
Auch wenn ich das "spax*" und das "s*" vertausche bleibt es sehr langsam - siehe Variante 4.
Die "Bremse" ist natürlich die Abfrage nach "s*", weil es hierbei sehr viele Ergebnisse gibt.
Wenn der SQL-Server bei der linken Bedingung ("spax*") feststellt dass diese FALSE ergibt, dann sollte er ja gar nicht mehr die rechte Abfrage nach dem "AND" machen und somit sehr viel schneller sein.
Warum ist das so?
Gibt es eine Möglichkeit das zu unterbinden bzw. zu verbessern?
Ich kenne sowas zb. von Visual Basic-Programmiersprache, wo anstatt des Schlüsselwortes "AND" "ANDALSO" verwendet werden kann.
1) dauert unter einer Sekunde:
SELECT Tabelle where contains(Spalte, '"spax*"')
2) dauert ca. 20 Sekunden:
SELECT Tabelle where contains(Spalte, '"spax*" AND "s*"')
3) dauert ebenfalls ca. 20 Sekunden:
SELECT Tabelle where contains(Spalte, '"spax*"') AND contains(Spalte, '"s*"')
4) dauert ebenfalls ca. 20 Sekunden:
SELECT Tabelle where contains(Spalte, '"s*"') AND contains(Spalte, '"spax*"')
Vielen Dank im Voraus
Christian