Effiziente Auswahl von Zufallsstichproben aus SQL Server-Tabellen
Das Abrufen zufälliger Zeilenstichproben aus großen SQL Server-Tabellen ist für verschiedene Zwecke nützlich. Ein gängiger Ansatz besteht darin, eine „Zufallszahl“-Spalte in einer temporären Tabelle zu generieren, diese mit Zufallswerten zu füllen und dann Zeilen auszuwählen, in denen die Zufallszahl innerhalb des gewünschten Bereichs liegt. Dieser Ansatz kann jedoch komplex und ineffizient sein.
Eine direktere Methode ist die Verwendung der Funktion NEWID(). NEWID() generiert eine eindeutige Kennung basierend auf einer Kombination aus Systemzeit und Zufälligkeit. Indem Sie die Tabelle nach der Ausgabe von NEWID() sortieren, randomisieren Sie effektiv die Zeilenreihenfolge.
Um einen bestimmten Prozentsatz an Zeilen auszuwählen, können Sie die TOP-Klausel verwenden. Um beispielsweise 10 % der Zeilen aus einer Tabelle mit dem Namen [yourtable] auszuwählen, würden Sie die folgende Abfrage verwenden:
<code class="language-sql">SELECT TOP 10 PERCENT * FROM [yourtable] ORDER BY NEWID();</code>
Obwohl diese Methode im Allgemeinen effizient ist, kann es bei der Arbeit mit besonders großen Tabellen zu Leistungsproblemen kommen. Um die Leistung zu optimieren, können Sie TOP- und WHERE-Klauseln kombinieren:
<code class="language-sql">SELECT * FROM [yourtable] WHERE [yourPk] IN ( SELECT TOP 10 PERCENT [yourPk] FROM [yourtable] ORDER BY NEWID() );</code>
Diese Abfrage verwendet [yourPk] als Primärschlüssel. Die innere Abfrage ruft die Primärschlüssel der ausgewählten Zeilen ab und die äußere Abfrage verwendet diese Primärschlüssel, um die Tabelle zu filtern. Dieser Ansatz verbessert die Leistung, indem die Anzahl der gescannten Zeilen reduziert wird.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient eine Zufallsstichprobe aus einer SQL Server-Tabelle auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!