2010-11-29 19 views
6

Sık sorulan bir soru olabilir, ancak şu ana kadar ikna edici bir cevap bulamadım.Verileri sayfalama, İş Katmanı veya Veritabanı Katmanı ile sıralama ile ilgili en iyi uygulama nedir?

Projemde, birden çok tablodan katılan bir sonuç olan yaklaşık 20.000'den fazla kayıt için çağrı yapmam gerekiyor ve farklı senaryolarda farklı şekilde sıralanması gerekiyor. ,

1 veritabanı katmanında ie. where dl.[row_number] between @index*@size+1 and @index*@[email protected] mağaza prosedürünü kullanarak bunu:

Halen orada önümde 2 seçenek vardır. Bunu yapma sorunu, her sıralama için ayrı ayrı Store Procs yazmanız gerekecek.

2, İş Mantığı katta bunu ve disk belleği ve sonuç yukarıda sıralama yapmak. (ie. skip(), take()) Ancak, 20.000 kayıt alıncaya kadar, ancak bunlardan sadece 10 tanesi kullanıldıkları için ideal değildir,

Bunun için herhangi bir standart en iyi uygulama var mı? Bu mantığı veritabanı katmanında tutmak için

+1

Sen için ayrı saklı yordam yapmak gerekmez her bir "nerede maddesi" Eğer durum ve açıklamalar gibi şeyler yapabilirsiniz çünkü. – jcolebrand

cevap

3

. saklı yordam kullanarak, o zaman uzatmak eğer

da sıralama sütunu (ler) dahil etmek nedenle, bu bir çok kullanıcılı bir uygulama ise sağ

0

set dönebilirsiniz Eğer sonucunu almak sürece ölçeklenebilirlik sorunları olacaktır Tek bir görüntü sayfası için ve işlemi gerçekleştirin. Örneğin, bir web sitesinde disk belleği olan bir ekran, kullanıcı her seferinde bir sonraki sayfaya gittiğinde yeni bir sorgulama yapmalıdır. Alternatif, 20K sonucunun web oturum içeriğinde kalmasını sağlamalıdır, bu da iyi ölçeklenmeyecektir.

Sıralama için sütun adı (veya sütun dizini) parametrelendirilemediğinden, sıralama için SQL dili ile hafif bir sıkıntı var.

İlgili konular