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

نام تاپیک: کنترل تعداد اطلاعات لود شده در دیتاگریدویو

  1. #1
    کاربر دائمی آواتار دلتنگ اسمان
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    دل یار
    سن
    35
    پست
    571

    کنترل تعداد اطلاعات لود شده در دیتاگریدویو

    با سلام
    یه برنامه نوشتم که بر اساس کد ملی ثبت و فراخوانی میشه.
    در فرم اصلی یه دیتاگریدویو گذاشتم که با اولین عددی که در تکس باکس زده میشود با دستور لایک در Textchange کلیه افرادی که کد ملی اونها با اون عدد شروع میشه رو در دیتا گریدویو نشون میده. و وقتی تعداد اعداد ورودی(ارقام کد ملی) در تکس باکس بیشتر میشه متعاقبا عمل فیلتر انجام میشه و محدودتر میشه. علت اینکه از این شیوه استفاده میکنم اینه که وقتی فردی قبلا ثبت شده باشه رو سریع نشون بده و دیگه کاربر بقیه ارقام کد ملی رو وارد نکنه و با کلیک بر روی نام فرد مورد نظر در دیتاگریدویو اطلاعات فرد در جای مشخص شده پر بشه.
    حالا مشکل اینجاست که الان که اطلاعات بیشتر شده ، لود این اطلاعات کندتر و مشکل تر شده. به نظر شما چیکار باید بکنم؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: کنترل تعداد اطلاعات لود شده در دیتاگریدویو

    سلام.
    کار اصولی نیست از اولین رقم کد ملی بخواید این فیلتر رو انجام بدید از یک رقم مناسب شروع به فیلتر کنید تا تعداد رکوردهای کمتری برگشت داده بشه (مثلا از 5 یا 6 مین رقم).
    گذشته بر علت بالا که اصلی ترین دلیل این مشکل می تونه باشه، علت لود سنگین اطلاعات ممکنه بخاطر چند مساله زیر هم باشه :
    بر روی ستون کد ملی که احتمال زیاد کلید اصلی جدول هم نیست، ایندکس مناسبی تعریف نشده. باید یک Non Cluster Index بر روی این ستون تعریف کنید تا سرعت جستجو و پیدا کردن رکوردها براساس این فیلد افزایش پیدا کنه.
    زمان برگشت دادن رکوردهای پیدا شده، احتمالا تمامی فیلدهای رکوردهای پیدا شده رو برگشت می دید که منابع زیادی رو از سیستم شما می گیره. می تونید فقط فیلد کد ملی رو برگشت و نمایش بدید.
    بهتر بود اطلاعات بیشتری از جدولتون (میزان رکوردها ، تعداد فیلدها و ...) و کوئری Select ای که نوشتید قرار می دادید تا بهتر و ریزتر میشد راهنمایی کرد.
    در کل به نظرم سناریوی خودتون رو در این زمینه اگر قدری تغییر بدید، سرعت به مراتب بیشتری رو تجربه خواهید کرد.

  3. #3
    کاربر دائمی آواتار دلتنگ اسمان
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    دل یار
    سن
    35
    پست
    571

    نقل قول: کنترل تعداد اطلاعات لود شده در دیتاگریدویو

    نقل قول نوشته شده توسط veniz2008 مشاهده تاپیک
    سلام.

    بر روی ستون کد ملی که احتمال زیاد کلید اصلی جدول هم نیست، ایندکس مناسبی تعریف نشده. باید یک Non Cluster Index بر روی این ستون تعریف کنید تا سرعت جستجو و پیدا کردن رکوردها براساس این فیلد افزایش پیدا کنه.
    کد ملی کلید اصلیه.Non Cluster Index چیه و چطوری میشه تعریف کرد؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: کنترل تعداد اطلاعات لود شده در دیتاگریدویو

    نقل قول نوشته شده توسط دلتنگ اسمان مشاهده تاپیک
    کد ملی کلید اصلیه.Non Cluster Index چیه و چطوری میشه تعریف کرد؟
    اگر کد ملی کلید هست، دیگه نیازی به Non Cluster Index نخواهید داشت چون بر روی کلید Cluster Index ساخته میشه که سرعت کار رو در هنگام جستجو براساس فیلد کد ملی بسیار بالا می بره.
    Non Cluster برای زمانی مفید هست که بر روی یک (یا چند ستون) عملیات های جستجوی زیادی انجام میشه که برای افزایش سرعت جستجو از Non Cluster استفاده می کنن چون از نوع Cluster Index فقط میشه یکی داشت و لی از Non Cluster می تونید چندین مورد مختلف داشته باشید که البته تعداد این non Cluster ها هم تقزیبا قاعده مشخصی داره که نتیجه عکس رو نده.
    مشکل شما قطعا بخاطر حجم زیاد اطلاعات برگشتی هست و البته باز هم هیچ اطلاعاتی در مورد جداول و کوئری هاتون نذاشتید و این تاپیک هم مثل اکثر تاپیک های برنامه نویس، کش دار و با کارایی کم خواهد بود. (نمی دونم چه اصراری وجود داره که کاربران اطلاعات قطره چکانی میدن و علاقه شدیدی به طولانی شدن تاپیک ها دارند).
    موفق باشید.

  5. #5
    کاربر دائمی آواتار دلتنگ اسمان
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    دل یار
    سن
    35
    پست
    571

    نقل قول: کنترل تعداد اطلاعات لود شده در دیتاگریدویو

    نقل قول نوشته شده توسط veniz2008 مشاهده تاپیک
    اگر کد ملی کلید هست، دیگه نیازی به Non Cluster Index نخواهید داشت چون بر روی کلید Cluster Index ساخته میشه که سرعت کار رو در هنگام جستجو براساس فیلد کد ملی بسیار بالا می بره.
    Non Cluster برای زمانی مفید هست که بر روی یک (یا چند ستون) عملیات های جستجوی زیادی انجام میشه که برای افزایش سرعت جستجو از Non Cluster استفاده می کنن چون از نوع Cluster Index فقط میشه یکی داشت و لی از Non Cluster می تونید چندین مورد مختلف داشته باشید که البته تعداد این non Cluster ها هم تقزیبا قاعده مشخصی داره که نتیجه عکس رو نده.
    مشکل شما قطعا بخاطر حجم زیاد اطلاعات برگشتی هست و البته باز هم هیچ اطلاعاتی در مورد جداول و کوئری هاتون نذاشتید و این تاپیک هم مثل اکثر تاپیک های برنامه نویس، کش دار و با کارایی کم خواهد بود. (نمی دونم چه اصراری وجود داره که کاربران اطلاعات قطره چکانی میدن و علاقه شدیدی به طولانی شدن تاپیک ها دارند).
    موفق باشید.
    این تصویر فرم اصلی . در قسمت کد ملی وقتی 0 رو میزنم کد ملی های مربوطه رو لود میکنه. اما با مکث!!
    untitled.JPG
    این هم کد مربوط فراخوانی از دیتابیس که فقط از جدول personal فرخوانی میشه.تمامی موارد رو فراخوانی میکنم اما در دیتا گرید مواردی رو که لازم دارم نشون میدم.
     SqlConnection con1 = new SqlConnection();
    SqlCommand com1 = new SqlCommand();
    con1.ConnectionString = "server=localhost;Integrated security=true;database=matab";
    com1.Connection = con1;
    con1.Open();

    com1.CommandText = "SELECT * from personal WHERE (codemelli like '" + codmellitxt.Text.Trim() + "%') ";

    com1.Connection = con1;
    SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand = com1;
    DataTable dt = new DataTable();
    sda.Fill(dt);
    con1.Close();

  6. #6
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: کنترل تعداد اطلاعات لود شده در دیتاگریدویو

    نقل قول نوشته شده توسط دلتنگ اسمان مشاهده تاپیک
    این تصویر فرم اصلی . در قسمت کد ملی وقتی 0 رو میزنم کد ملی های مربوطه رو لود میکنه. اما با مکث!!
    untitled.JPG
    این هم کد مربوط فراخوانی از دیتابیس که فقط از جدول personal فرخوانی میشه.تمامی موارد رو فراخوانی میکنم اما در دیتا گرید مواردی رو که لازم دارم نشون میدم.
     SqlConnection con1 = new SqlConnection();
    SqlCommand com1 = new SqlCommand();
    con1.ConnectionString = "server=localhost;Integrated security=true;database=matab";
    com1.Connection = con1;
    con1.Open();

    com1.CommandText = "SELECT * from personal WHERE (codemelli like '" + codmellitxt.Text.Trim() + "%') ";

    com1.Connection = con1;
    SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand = com1;
    DataTable dt = new DataTable();
    sda.Fill(dt);
    con1.Close();
    در پست اولم همه چیز رو توضیح دادم ولی توجه نکردید.
    در جستجوی اولی که با Like نوشتید نیازی نیست که همه فیلدها رو برگشت بدید (به جای * از نام فیلد کد ملی استفاده کنید).
    شما تک فیلد (فقط کد ملی) برگشت بدید منابع کمتری رو می گیره یا همه فیلدهای جدول رو؟؟؟ این همه فیلدی که برگشت می دید، میاد تو رم سیستم قرار می گیره که علاوه بر زمانبر شدن عملیات، منابع زیادی رو هم از سیستم خودتون ( و در اینده سیستم مشتری) می گیره.
    هر زمان که از بین کدهای ملی برگشت داده شده، موردی انتخاب شد، اونوقت همه اطلاعات اون کد ملی رو با یه select برگشت بدید.

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

  1. سوال: ذخیره اطلاعات وارد شده در دیتاگریدویو
    نوشته شده توسط علی فتحی در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 19 بهمن 1392, 20:31 عصر
  2. مبتدی: کنترل تعداد کارکترهای وارد شده در تکست باکس
    نوشته شده توسط majesticsoft در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: پنج شنبه 08 تیر 1391, 22:42 عصر
  3. پاسخ: 10
    آخرین پست: دوشنبه 10 مهر 1385, 05:47 صبح
  4. گرفتن اطلاعات اتسال اینترنت. (تعداد بایت فرستاده شده)
    نوشته شده توسط H_SH_VB در بخش برنامه نویسی در 6 VB
    پاسخ: 13
    آخرین پست: پنج شنبه 27 بهمن 1384, 22:49 عصر
  5. کنترل تعداد رکوردهای لود شده در حافظه
    نوشته شده توسط vcldeveloper در بخش برنامه نویسی در Delphi
    پاسخ: 8
    آخرین پست: یک شنبه 04 مرداد 1383, 07:05 صبح

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

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