Ich muss das Ende von Strings mit einer Liste von möglichen Enden in einer gespeicherten Prozedur vergleichen. Es wird viel genannt werden und es gibt etwa 10-15 Kandidatenendungen. An dieser Stelle ist eine Code-only-Lösung vorzuziehen, um dafür dedizierte Tabellen zu erstellen. Etwas, das wäre wie:
%Vor%Ich suche den besten Weg in Bezug auf Geschwindigkeit, aber auch Wartbarkeit. Kandidaten, die ich kenne, sind
RECHTS, mein Liebling bisher, aber es bedeutet, dass ich die String-Länge hart codieren muss, so kann anfällig für Fehler sein. Es bedeutet auch, die Quellzeichen mehrmals zu schneiden.
%Vor%WIE, wahrscheinlich langsamer, aber ein bisschen sauberer
%Vor%CHARINDEX, wahrscheinlich langsamer, da es die ganze Zeichenfolge durchsucht
SUBSTRING, wahrscheinlich gleichwertig mit RIGHT und viel hässlicher
SQLCLR, um meinen eigenen ENDSWITH zu erstellen, kann es ziemlich schnell sein
Es könnte bessere Wege geben, von denen ich nichts weiß. Was denkst du?
Der beste Weg, dies für SQL zu optimieren, könnte darin bestehen, den REVERSE String-Wert zu speichern eine andere Spalte, die indiziert ist und suchen Sie die linke Seite davon entweder mit LEFT oder LIKE.
Das Analysieren von Strings hat einen Overhead, der beste Vorschlag ist das LIKE '% foo' ODER als Option. Bestimmte Indizes nutzen und suchen über Scans.
Sie müssten Benchmarks durchführen, um zu sehen, ob sie geeignet sind, aber leicht überprüfbar wären.
Überprüfen Sie dies in Bezug auf LIKE und INDEX Ссылка
Tags und Links sql optimization sql-server tsql string-comparison