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

نام تاپیک: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مهر 1389
    محل زندگی
    دزفول شهر آب های خروشان
    پست
    148

    select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    خواستم سرعت اجرای stored procedure رو امتحان کنم نسبت به روش نوشتن کوئری در خود برنامه ای مثل سیشارپ که بر به مشکل خوردم. مشکل من اینه :
    یک پایگاه داده با 1 میلیون رکورد ایجاد کردم بعد با 2 روش این رکورد ها رو فراخونی کردم و درون data table قرار دادم و بعدش تو datagirdview نمایش دادم
    روش اول که تو خود محیط C#‎ کوئری رو نوشتم
    string str = "select * from tbl ";
    SqlConnection a = new SqlConnection(@"Data Source=.;Initial Catalog=phonbook;Integrated Security=True");
    a.Open();
    SqlCommand b = new SqlCommand();
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(str, a);
    da.Fill(dt);
    dataGridView1.DataSource = dt;

    این روش معمولی هستش که 15 ثانیه طول می کشه تا تمام 1 میلیون رکورد رو نمایش بده که زمان زیادیه.

    همین روش رو با SP پیاده کردم و تو datagird بازم نمایش دادم که زمان شد 11 ثانیه ولی بازم این زمان برام خیلی زیاده و میخوام به محض اینکه دکمه نمایش رو زدم در حد اقل زمان اطلاعات رو نمایش بده.
    بنظرتون مشکل من از کجا بوده؟ چرا اینقدر زمان برای نمایش اطلاعات از بانک تلف میشه؟
    آیا این عادیه برای 1 میلیون رکورد؟

    ممنون

  2. #2

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    این بحث تقریبا تخصصیه مربوط میشه یه بانک!
    این زمان کاملا به ساختار بانک و نحوه طراحی اون بستگی داره؛ خیلی عوامل دخیل هستند که باید در هنگام طراحی بانک پیاده سازی بشند؛ که همشون با مطالعه و تجربه به دست میان.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مهر 1389
    محل زندگی
    دزفول شهر آب های خروشان
    پست
    148

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    حالا بنظرت چه تجربه و چه ساختاری نیازیه؟ میشه یک راهنمایی بکنید

  4. #4

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    سلام
    خواندن داده ها وآوردن روی حافظه زمانی نمی بره مشکل وقتیه که بخواد در datagridview نمایش بده چون لازمه تعداد زیادی سلول ایجاد بشه
    یک روش برای حل این مشکل اینه که یک datagridview درست کنید که مثلا 50 تا سطر داشته باشه و هر وقت که scrollbar کنار اون را جابجا کنید صد تا داده را از datatable بخونه و داخل datagridview بریزه

  5. #5

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    1 میلیون رکورد همزمان که دیده نمیشه
    باید دسته بندی کنی و مثلا 20 تا 20 تا یا 50 تا 50 تا نشون بدی
    این روشی رو که اقای rahnema1 هم فرمودن عالیه

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مهر 1389
    محل زندگی
    دزفول شهر آب های خروشان
    پست
    148

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    من همین الان تو خود sql server یک کوئری برای نمایش هین اطلاعات نوشتم. میدونید چند ثانیه طول کشید؟ دقیق 11 ثانیه.
    بعنی به اندازه زمانی که SP رو تو محیط C#‎ نشون دادم به وسیله datagridview
    من سوالم رو اینجا مطرح کردم و شما دوستان پاسخ دادیدن اما بنظرم شما هم مثل من نمیدونید مشکل کجاست. تا الان متوجه شدم مشکل نو محیط سیشارپ نیست.
    یا 1 میلیون رکورد خیلی زیاده و این زمان 11 ثانیه طبیعیه برای اجرای کامل یا باید یک جوری یادش بگیرم.
    آخه دستور من خیلی سادس یک جدول هم بیشتر نداره که بگیم نوع اینر جوین یا بهینه بودن کد مهمه. یک دستور ساده Select هستش

  7. #7

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    از اون کدی که اینجا گذاشتید این خط را کامنت کنید
    dataGridView1.DataSource = dt;

    چند ثانیه طول می کشه؟
    یک بار دیگه مطلبی را که در پست قبل نوشتم با دقت بخونید

  8. #8
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    نقل قول نوشته شده توسط mehdiba3 مشاهده تاپیک
    من همین الان تو خود sql server یک کوئری برای نمایش هین اطلاعات نوشتم. میدونید چند ثانیه طول کشید؟ دقیق 11 ثانیه.
    بعنی به اندازه زمانی که SP رو تو محیط C#‎‎‎‎‎‎‎‎‎‎‎ نشون دادم به وسیله datagridview
    من سوالم رو اینجا مطرح کردم و شما دوستان پاسخ دادیدن اما بنظرم شما هم مثل من نمیدونید مشکل کجاست. تا الان متوجه شدم مشکل نو محیط سیشارپ نیست.
    یا 1 میلیون رکورد خیلی زیاده و این زمان 11 ثانیه طبیعیه برای اجرای کامل یا باید یک جوری یادش بگیرم.
    آخه دستور من خیلی سادس یک جدول هم بیشتر نداره که بگیم نوع اینر جوین یا بهینه بودن کد مهمه. یک دستور ساده Select هستش
    با سلام
    باید خدممتون عرض کنم که load اطلاعات در هر سیستم متغیر هست و بستگی به قطعات سخت افزاری از جمله cpu و ram حتی نرم افزاری و آزاد بودن cpu داره
    یکی از مشکلات برنامه نویسان اینه که می خوان همه اطلاعات رو یکجا نشون بدن که اصلاً کاربر به این همه اطلاعات نیازی نداره
    در برنامه های تجاری و اتوماسیون اداری هم اگر مشاهده کنید بیشترشون روی فیلتر برنامه ریزی کردن که Performance و کارایی رو بالا میبره
    برای نمایش رکورد های زیاد هم راهکارهایی از جمله راهکار بالا وجود داره و در سایت هم بحث شده
    موفق باشید

  9. #9
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

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

  10. #10

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    شما فقط گفتید یک table و یک میلیون Record و وارد جزئیات نشدید.

    برای شما فرقی نداره که یک Table یک field داشته باشه یا 20 تا ؟ مطئناٌ فرق داره
    حالا Table شما چند تا فیلد داره ؟ از چه نوعی است ؟

    در ضمن شما از روش * Select استفاده نکنید . دقیقاٌ نام تمام فیلد ها را ذکر کنید. در ضمن در صورتی که فیلدی را نیاز ندارید حتی یک فیلد هم نیاز ندارید از ذکر آن پرهیز کنید تا SQL تمام Data را Analyze نکنه
    موفق باشید

  11. #11
    کاربر دائمی آواتار aghayex
    تاریخ عضویت
    دی 1388
    محل زندگی
    https://telegram.me/Sed_kazem18
    پست
    924

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    این قضیه مربوط به پرفرمنس دیتابیست میشه مثلا اگه شما از ایندکس ها استفاده کنی سرعت بالا می ره و ...
    به شما توصیه می کنم یه سری به سایت نیک آموز بزنید و فایل های صوتی اون بزرگوار رو بشنوید

  12. #12
    کاربر دائمی
    تاریخ عضویت
    مهر 1389
    محل زندگی
    دزفول شهر آب های خروشان
    پست
    148

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    دیتا بیس من 1 میلیون رکورد و در هر رکورد 4 فیلد همونم از نوع nvarchar تعریف شده که رویس هم 4 میلیون رکورد میشه.
    چنتا از دوستان از روش ایندکس گذاری گفتن. میشه توضیح بفرمایید ایندکس چیه؟

  13. #13
    کاربر دائمی آواتار aghayex
    تاریخ عضویت
    دی 1388
    محل زندگی
    https://telegram.me/Sed_kazem18
    پست
    924

    نقل قول: select کردن 1 میلیون رکورد چرا باید اینقدر زمان ببره؟

    دوست عزیز شما اگه سری به این سایت بزنید حساب دستتون میاد.

تاپیک های مشابه

  1. در خواست راهنمایی در مورد Select کردن آخرین رکورد
    نوشته شده توسط sadeghpa80 در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: شنبه 14 دی 1392, 10:39 صبح
  2. سوال: مشکل در select کردن یه رکورد از grid view
    نوشته شده توسط ali9698 در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: چهارشنبه 03 آبان 1391, 21:36 عصر
  3. سوال: select کردن تمام رکورد های یک جدول از دیتا بیس sql
    نوشته شده توسط ahgrab در بخش C#‎‎
    پاسخ: 8
    آخرین پست: یک شنبه 07 فروردین 1390, 09:01 صبح
  4. سوال: چرا باید بعد از گذشت زمان كوتاهي بايد دوباره پسوردم رو وارد كنم؟
    نوشته شده توسط tabatabaeefar در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 5
    آخرین پست: پنج شنبه 16 مهر 1388, 07:19 صبح
  5. پاسخ: 6
    آخرین پست: چهارشنبه 15 آذر 1385, 07:28 صبح

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

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