SQL WHERE IN-Klauseln mit durch Kommas getrennten Zeichenfolgen optimieren
Gespeicherte Prozeduren erhalten häufig durch Kommas getrennte Zeichenfolgenparameter. Die effiziente Konvertierung dieser Zeichenfolgen zur Verwendung in WHERE IN
-Klauseln ist für die Leistung von entscheidender Bedeutung. In diesem Artikel werden Best Practices für diese Konvertierung beschrieben.
Nutzung benutzerdefinierter Funktionen (UDFs)
Eine robuste Lösung besteht darin, eine UDF zu erstellen, um die durch Kommas getrennte Zeichenfolge zu analysieren. Eine leistungsstarke UDF für SQL Server 2005 und spätere Versionen ist f_split
, siehe unten:
<code class="language-sql">CREATE function [dbo].[f_split] ( @param nvarchar(max), @delimiter char(1) ) returns @t table (val nvarchar(max), seq int) as begin set @param += @delimiter ;with a as ( select cast(1 as bigint) f, charindex(@delimiter, @param) t, 1 seq union all select t + 1, charindex(@delimiter, @param, t + 1), seq + 1 from a where charindex(@delimiter, @param, t + 1) > 0 ) insert @t select substring(@param, f, t - f), seq from a option (maxrecursion 0) return end</code>
Abfrageintegration
Diese UDF vereinfacht das Filtern mit der IN
-Klausel:
<code class="language-sql">SELECT * FROM yourtable WHERE account IN (SELECT val FROM dbo.f_split(@account, ','))</code>
Leistungsvergleich: UDF vs. XML
Während STRING_SPLIT
(XML-basierte Aufteilung) eine Alternative ist, zeigt f_split
durchweg eine überlegene Leistung, insbesondere bei großen Datensätzen. Benchmarktests bestätigen diesen Vorteil.
Zusammenfassung
Die f_split
UDF bietet eine zuverlässige und effiziente Methode zur Verarbeitung von durch Kommas getrennten Zeichenfolgen in WHERE IN
-Klauseln. Aufgrund seiner Leistungsvorteile ist es der empfohlene Ansatz.
Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Zeichenfolgen für SQL-WHERE-IN-Klauseln effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!