ورود

View Full Version : Fetch کردن تدریجی رکوردها



حمیدرضاصادقیان
چهارشنبه 05 دی 1386, 20:14 عصر
سلام دوستان.من میخواستم داده ها رو به صورت تدریجی لود کرده و به کاربر نمایش دهم.
فرض کنید من میخوام لیست کالا رو به کاربر نمایش دهم.حالا حدود 1000000 رکورد هم داره.
چطور باید این رکوردها رو به کاربر نمایش دهم که وقتی خواست فیلتر کنه یا یک کالای خاص رو جستجو کنه به مشکلی برنخوره.چون اگه بخوام هنگام نمایش فرم تمامی دیتا رو به کاربر نمایش دهم خیلی طول میکشه.
اگر من بخوام یک indexed view از این کوئری درست کنم و نمایش دهم مشکل حل خواهد شد؟
چون در حال حاضر برنامه ما توسط msde داره کار میکنه.ولی ظاهرا برای کارکردن با indexed view باید از developer or enterprise استفاده کنم.

AminSobati
چهارشنبه 05 دی 1386, 23:41 عصر
دوست عزیزم در SQL Server 2005 به کمک Row_Number میشه به رکوردها شماره ردیف داد و صفحه به صفحه در خواست کرد. اما روشهای دیگه ای هم در این آدرس توضیح داده شده:
http://www.aspfaq.com/show.asp?id=2120

حمیدرضاصادقیان
یک شنبه 09 دی 1386, 16:17 عصر
ممنون استاد.ولی این مشکل رو من به شکل دیگه ای حل کردم که توش به مشکل برخوردم.
به این صورت که ابتدا یک view از select مربوطه ایجاد کردم.بعد داخل برنامه کاربر که میخواد رکوردهای خودش رو فیلتر کنه من فقط 37 رکورد اول رو نمایش میدم.تا اینجای کار به راحتی کار میکنه.حتی اگه کاربر به صفحه بعد بره 37 رکورد بعدی هم بهش نمایش میدم.
حالا مشکل اینه که برای کاربر مرتب سازی گذاشتیم که با توجه به اون روی select مربوطه ما order by انجام میدیم.اینجا وقتی روی رکوردهای بالا order by رو اجرا میکنم با اینکه قراره فقط 37 رکورد اول رو بیاره ولی ظاهرا یک بار تمام جدول باید لود بشه بعد 37 تای اول رو نمایش بده که این باعث میشه حدود 10 ثانیه طول بکشه که خیلی طولانیه.

AminSobati
یک شنبه 09 دی 1386, 22:21 عصر
درسته، Row_Number در بسیاری از موارد ناچاره تعداد زیادی رکورد Fetch کنه تا صفحه دلخواه شما بدست بیاد. لینکها کمک نکرد؟

حمیدرضاصادقیان
دوشنبه 10 دی 1386, 08:34 صبح
ممنون.مگر اینکه از همین روشها استفاده کنم.