Heim > Datenbank > MySQL-Tutorial > Wie kann ich effizient eine Zufallsstichprobe aus einer SQL Server-Tabelle auswählen?

Wie kann ich effizient eine Zufallsstichprobe aus einer SQL Server-Tabelle auswählen?

Susan Sarandon
Freigeben: 2025-01-19 08:07:10
Original
662 Leute haben es durchsucht

How Can I Efficiently Select a Random Sample from a SQL Server Table?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage