SORU
15 Mart 2009, Pazar


Rastgele satır Etmeniz için Sql

(Ve en hızlı) rastgele bir satır Seri bir sorunum var SQL kullanarak almasını en iyi yolu, örneğin bazı alana doğru olmalıdır ?

CEVAP
15 Mart 2009, Pazar


Sahte bir UDF; kısmi bir sınıf olarak, veri bağlama yöntemi ekleyin: kullanarak veritabanı yapabilirsiniz

partial class MyDataContext {
     [Function(Name="NEWID", IsComposable=true)] 
     public Guid Random() 
     { // to prove not used by our C# code... 
         throw new NotImplementedException(); 
     }
}

order by ctx.Random(); NEWID() SQL-Server nezaket de rastgele bir sıralama yapacak. yani

var cust = (from row in ctx.Customers
           where row.IsActive // your filter
           orderby ctx.Random()
           select row).FirstOrDefault();

Unutmayın bu sadece uygun küçük ve orta ölçekli tablolar, dev tablolar, olacak bir performans etkisi de sunucu ve daha verimli bulmak için satır sayısı (Count), sonra birini seç rastgele (Skip/First).


için geçerli bir yaklaşım:

var qry = from row in ctx.Customers
          where row.IsActive
          select row;

int count = qry.Count(); // 1st round-trip
int index = new Random().Next(count);

Customer cust = qry.Skip(index).FirstOrDefault(); // 2nd round-trip

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CorridorDigital

    CorridorDigi

    17 Mayıs 2010
  • Pocketnow

    Pocketnow

    14 EKİM 2007
  • RyanXLT

    RyanXLT

    22 Ocak 2011