Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Linq to SQL effizient eine zufällige Zeile mit Bedingungen abrufen?

Wie kann ich mithilfe von Linq to SQL effizient eine zufällige Zeile mit Bedingungen abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-26 16:12:10613Durchsuche

How to Efficiently Fetch a Random Row with Conditions Using Linq to SQL?

Zufällige Zeilen abrufen, die spezifische Kriterien mit LINQ zu SQL

erfüllen

Extrahieren einer zufälligen Datenbankzeile, die bestimmte Bedingungen mit LINQ zu SQL erfüllt, kann schwierig sein. Eine gemeinsame Lösung beinhaltet eine simulierte benutzerdefinierte Funktion (UDF) in der Datenbank.

Um dies zu erreichen, integrieren Sie die folgende Funktion in die Teilklasse Ihres Datenkontextes:

<code class="language-csharp">partial class MyDataContext {
     [Function(Name="NEWID", IsComposable=true)] 
     public Guid Random() 
     { 
         throw new NotImplementedException(); 
     }
}</code>

Beachten Sie, dass diese C# -Funktion nicht direkt genannt wird. Sein Zweck ist es, die NEWID() -Funktion des SQL Servers für die zufällige Bestellung zu nutzen. Dies geschieht durch Bestellung Ihrer Abfrage mit ctx.Random():

<code class="language-csharp">var cust = (from row in ctx.Customers
           where row.IsActive 
           orderby ctx.Random()
           select row).FirstOrDefault();</code>

Diese Methode funktioniert gut für kleinere Datensätze. Die Leistung kann jedoch mit größeren Tischen leiden. Für wesentliche Datensätze beinhaltet ein effizienterer Ansatz zuerst die Zeilen und dann die Auswahl eines zufälligen Index:

<code class="language-csharp">var qry = from row in ctx.Customers
          where row.IsActive
          select row;

int count = qry.Count(); // First database query
int index = new Random().Next(count);

Customer cust = qry.Skip(index).FirstOrDefault(); // Second database query</code>

Diese Alternative erfordert zwei Datenbankinteraktionen, vermeidet jedoch die potenziellen Leistungs Engpässe, um große Tabellen zufällig zu bestellen. Wählen Sie die Methode aus, die für Ihre Datengröße und Leistungsanforderungen am besten geeignet ist.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Linq to SQL effizient eine zufällige Zeile mit Bedingungen abrufen?. 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