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>
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>
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.
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!