نمایش نتایج 1 تا 11 از 11

نام تاپیک: ROW_NUMBER

  1. #1
    مدیر بخش آواتار ahmad156
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    شیراز
    پست
    2,104

    ROW_NUMBER

    سلام دوستان
    من یه DataBase (در واقع یه Table) دارم که حدود 500000 تا رکورد داره و هر سطر هم حدود 10 تا فیلد.
    من توی یه برنامه Windows Application گرید ویویی دارم که اطلاعات رو از این Table جستجو میکنه و نشون میده.
    توی هر صفحه گرید ویو من 20 تا از رکوردها رو نشون میدم.چون حجم داده ها خیلی زیاد هست من برای هر صفحه از گریدویو 20 تا 20 رکورد از داده ها رو میگیرم.برای این کار من از ROW_NUMBER استفاده میکنم.
    توی ROW_NUMBER مشکلی که هست ابتدا بر اساس یه فیلد مرتب میکنه بعد عملیات رو انجام میده.
    آیا روشی توی SQL SERVER هست که سریعتر از این روش یا بهینه شده این روش رو انجام بده مثل MYSQL که LIMIT داره؟
    ممنون



  2. #2
    کاربر دائمی آواتار DlphIran
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    استان گرم یزد
    سن
    41
    پست
    231

    نقل قول: ROW_NUMBER

    سریعتر رو نمی دونم اما بهترین روش، paging هست. عنوان paging رو جستجو کنید.

  3. #3

    نقل قول: ROW_NUMBER

    نقل قول نوشته شده توسط DlphIran مشاهده تاپیک
    سریعتر رو نمی دونم اما بهترین روش، paging هست. عنوان paging رو جستجو کنید.
    برای استفاده از Paging باید از تابع Row_Number استفاده بشه دیگه! فرض بر این هست که دوستمون داره از SQL2005 به بالا استفاده میکنه، چون قبل از این ورژن همچین فانکشنی نداشتیم

    توی هر صفحه گرید ویو من 20 تا از رکوردها رو نشون میدم.چون حجم داده ها خیلی زیاد هست من برای هر صفحه از گریدویو 20 تا 20 رکورد از داده ها رو میگیرم.برای این کار من از ROW_NUMBER استفاده میکنم.
    توی ROW_NUMBER مشکلی که هست ابتدا بر اساس یه فیلد مرتب میکنه بعد عملیات رو انجام میده.
    لطفا کوئری که باهاش گریدتونو پر میکنین بزارین ببینیم چکار کردید! شاید هر بار دارید همه رکوردها رو فراخوانی میکنید ولی فقط 20 تا از اونها رو نمایش میدید!

  4. #4
    مدیر بخش آواتار ahmad156
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    شیراز
    پست
    2,104

    نقل قول: ROW_NUMBER

    WITH myTable AS (SELECT Fields,ROW_NUMBER() OVER (ORDER BY phoneid) AS rownumber FROM TableName WHERE Conditions) SELECT* FROM myTable WHERE rownumber>=FirstValue AND rownumber<=LastValue

    من میخوام که اون مرتب سازی رو هم انجام نده,سرعت خیلی برام مهمه



  5. #5

    نقل قول: ROW_NUMBER

    الان برای اینکه 20 تا ردیف رو نشون بده چقدر وقت میبره؟

    من جدولی ندارم که 500 هزار تا رکورد داشته باشه، ولی یکی دارم که حدود 100 هزار تا رکورد داره با این کد بین 1 تا 2 میلی ثانیه 20 رکورد رو نشون میده:


    Select *, RowNum
    From
    ( SELECT *,
    Row_Number() Over (Order by PhoneId) as RowNum
    FROM MyTable
    ) as MyTableInfo
    Where (RowNum between 100 and 120)


  6. #6
    مدیر بخش آواتار ahmad156
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    شیراز
    پست
    2,104

    نقل قول: ROW_NUMBER

    دوست عزیز بحث کمیت سرعت نیست.من میخوام که بدون مرتب سازی((Row_Number() Over (Order by PhoneId)) داده های مورد نظرم رو بده.چون داده ها زیاده مرتب سازی اثر قابل توجهی رو سرعت میذاره
    ممنون



  7. #7

    نقل قول: ROW_NUMBER

    نقل قول نوشته شده توسط ahmad156 مشاهده تاپیک
    دوست عزیز بحث کمیت سرعت نیست.من میخوام که بدون مرتب سازی((Row_Number() Over (Order by PhoneId)) داده های مورد نظرم رو بده.چون داده ها زیاده مرتب سازی اثر قابل توجهی رو سرعت میذاره
    ممنون
    شما اصلا این راهو امتحان کردی؟

  8. #8
    مدیر بخش آواتار ahmad156
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    شیراز
    پست
    2,104

    نقل قول: ROW_NUMBER

    آره الان دارم ازش استفاده میکنم



  9. #9

    نقل قول: ROW_NUMBER

    نقل قول نوشته شده توسط ahmad156 مشاهده تاپیک
    آره الان دارم ازش استفاده میکنم
    تغییری در سرعت بوجود اومد یا خیر؟

    در مورد استفاده از Row_Number شما راهی ندارید که اون مرتب سازی انجام نشه

  10. #10
    مدیر بخش آواتار ahmad156
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    شیراز
    پست
    2,104

    نقل قول: ROW_NUMBER

    تنها راه ممکن استفاده از Row-Number هست فعلا.
    اگه راه دیگه ای هست نمیدونم!



  11. #11
    مدیر بخش آواتار ahmad156
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    شیراز
    پست
    2,104

    نقل قول: ROW_NUMBER

    اساتید عزیز نظری ندارن؟



قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •