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

  • foreignimage

    foreignimage

    13 HAZİRAN 2006
  • Vortez

    Vortez

    27 Temmuz 2009
  • warningthepeople

    warningthepe

    21 EYLÜL 2011