L'extraction d'un sous-ensemble aléatoire de lignes d'une table SQL Server de grande taille peut nécessiter beaucoup de calculs. Plutôt que d'utiliser des tables temporaires complexes et des processus itératifs, une méthode plus efficace et plus simple utilise les fonctions inhérentes à SQL Server.
La fonction NEWID()
génère un GUID aléatoire unique, fournissant une base pour la sélection aléatoire de lignes. Pour récupérer un échantillon aléatoire de 10 % d'une table nommée [yourtable]
, utilisez cette requête concise :
<code class="language-sql">SELECT TOP 10 PERCENT * FROM [yourtable] ORDER BY NEWID()</code>
Pour les tables nettement plus grandes, l'optimisation des performances est obtenue avec cette technique :
<code class="language-sql">SELECT * FROM [yourtable] WHERE [yourPk] IN (SELECT TOP 10 PERCENT [yourPk] FROM [yourtable] ORDER BY NEWID())</code>
Cette approche exploite une analyse de clé pour identifier les valeurs de clé primaire pour les lignes sélectionnées, puis se joint à la table d'origine pour récupérer les données complètes des lignes. Cette opération de jointure entraîne généralement une surcharge minimale, en particulier pour les sélections de petits pourcentages sur de grands ensembles de données.
Ces techniques rationalisées offrent aux développeurs un moyen très efficace de sélectionner des échantillons aléatoires dans les tables SQL Server, évitant ainsi les alternatives complexes et gourmandes en ressources.
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!