Maison > base de données > tutoriel mysql > Comment puis-je sélectionner efficacement un échantillon aléatoire de lignes dans une table SQL Server ?

Comment puis-je sélectionner efficacement un échantillon aléatoire de lignes dans une table SQL Server ?

Patricia Arquette
Libérer: 2025-01-19 08:02:14
original
777 Les gens l'ont consulté

Extraire efficacement des lignes aléatoires des tables SQL Server

La génération d'échantillons aléatoires à partir de tables SQL Server est une opération utile à diverses fins. Une solution courante consiste à sélectionner au hasard un nombre fixe de lignes dans le tableau.

Inconvénients des méthodes complexes

Les problèmes mentionnés dans l'article mettent en évidence des méthodes complexes utilisant des tables temporaires et des boucles RAND(). Ces méthodes sont inefficaces et peu flexibles.

Limitations de la méthode NEWID()

L'article mentionne également une méthode alternative utilisant la fonction NEWID(). Cependant, cette approche peut ne pas convenir à l'exigence de sélectionner un pourcentage spécifique de lignes.

Solution T-SQL

Afin de résoudre ce problème, l'article propose un script SQL Server :

<code class="language-sql">select top 10 percent * from [yourtable] order by newid()</code>
Copier après la connexion

Cette instruction utilise la fonction NEWID() et la clause TOP pour sélectionner les 10 % des lignes supérieures et renvoyer un échantillon aléatoire de la table.

Méthodes d'optimisation pour les grandes tables

Pour les grandes tables, les performances peuvent être améliorées en utilisant le script modifié suivant :

<code class="language-sql">select * from [yourtable] where [yourPk] in 
(select top 10 percent [yourPk] from [yourtable] order by newid())</code>
Copier après la connexion

Cette méthode fonctionne en deux étapes : d'abord, sélectionner des valeurs de clé primaire aléatoires, puis utiliser ces valeurs de clé primaire pour récupérer les lignes correspondantes. Il équilibre les coûts d'analyse des clés et de jointure, ce qui le rend plus efficace pour les grandes tables.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal