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

  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • The Warp Zone

    The Warp Zon

    24 AĞUSTOS 2007
  • Wild Academy

    Wild Academy

    8 Aralık 2009