Maison >développement back-end >C++ >Comment récupérer efficacement les lignes aléatoires d'une base de données à l'aide de LINQ à SQL?
Lorsque vous utilisez LINQ à SQL pour récupérer la ligne aléatoire de la base de données, si elle dépend du filtrage et de la randomisation du client, il peut rencontrer des problèmes de performance. La méthode suivante fournit une approche aléatoire d'une récupération efficace qui remplit des conditions spécifiques:
Utilisation de la fonction personnalisée de l'utilisateur analogique (UDF)
Pour les tables de petite et moyenne taille, l'UDF simulé peut être utilisé pour effectuer un fonctionnement aléatoire au niveau de la base de données. Dans le contexte des données, définissez une partie de la classe et ajoutez les méthodes suivantes:
Bien que cet UDF ne soit pas réellement implémenté dans le code C #, SQL Server l'utilisera pour effectuer un tri aléatoire. Pour récupérer les lignes aléatoires en fonction des conditions, veuillez utiliser les demandes suivantes:
<code class="language-csharp">partial class MyDataContext { [Function(Name="NEWID", IsComposable=true)] public Guid Random() { throw new NotImplementedException(); } }</code>
La méthode de comptage
<code class="language-csharp">var cust = (from row in ctx.Customers where row.IsActive // 您的筛选条件 orderby ctx.Random() select row).FirstOrDefault();</code>
Pour les grandes tables, les méthodes basées sur le comptage peuvent être plus efficaces. Le principe de travail est le suivant: Utiliser Calculez le nombre de lignes de tête.
Dans la plage de 0 à 1, un indice aléatoire est généré.
qry.Count()
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!