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ş:
Nasıl bir TSQL Seçin her satır için ra...
Ben ETMENİZ SQL Server Compact Edition...
Satır eşleştirmek için düzenli ifade e...
Nasıl bir karakter yerine Vim bir yeni...
Dinamik hücre düzenleri için UİTableVi...