Heim >Datenbank >MySQL-Tutorial >Wie kann ich effizient einen zufälligen Prozentsatz von Zeilen in SQL Server auswählen?

Wie kann ich effizient einen zufälligen Prozentsatz von Zeilen in SQL Server auswählen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-19 08:17:09298Durchsuche

How Can I Efficiently Select a Random Percentage of Rows in SQL Server?

Vereinfachte zufällige Zeilenauswahl in SQL Server: Ein optimierter Ansatz

SQL Server-Benutzer müssen häufig eine zufällige Stichprobe von Zeilen aus einer Tabelle auswählen. Die Suche nach einer sauberen und effizienten Methode hierfür war in der Vergangenheit problematisch. Dieser Artikel stellt eine vereinfachte Lösung vor.

Frühere Versuche beinhalteten oft komplexe temporäre Tabellen und iterative Prozesse. Obwohl die NEWID()-Funktion Potenzial bietet, erwies sich die zuverlässige Auswahl eines genauen Prozentsatzes als schwierig.

Hier ist eine prägnante und effiziente Lösung:

<code class="language-sql">SELECT TOP 10 PERCENT * FROM [yourtable] ORDER BY NEWID()</code>

Diese Abfrage verwendet ORDER BY NEWID(), um die Zeilen zufällig zu mischen. TOP 10 PERCENT wählt dann die oberen 10 % dieser gemischten Zeilen aus.

Für sehr große Tabellen empfiehlt sich ein leistungsoptimierter Ansatz:

<code class="language-sql">SELECT * FROM [yourtable] WHERE [yourPk] IN (SELECT TOP 10 PERCENT [yourPk] FROM [yourtable] ORDER BY NEWID())</code>

Dieser Ansatz wählt zunächst mithilfe einer Unterabfrage eine zufällige Stichprobe von Primärschlüsselwerten aus. Die Hauptabfrage ruft dann nur die Zeilen ab, die diesen Schlüsseln entsprechen. Dies reduziert die gescannten Daten erheblich und steigert die Leistung.

Diese Techniken bieten eine einfache und effektive Möglichkeit, eine zufällige Zeilenauswahl in SQL Server durchzuführen und so ein zuvor komplexes Problem zu lösen.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient einen zufälligen Prozentsatz von Zeilen in SQL Server auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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