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

نام تاپیک: مشکل زمان

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تبریز
    پست
    501

    مشکل زمان

    سلام
    من یک table دارم تقریبا با 500000 رکورد وقتی من میخوام از table داده با Query استخراج کنم حدود یک دقیقه طول میکشد که به یک error می دهد که در زیر میزارم
    و در ضمن cpu من دو هسته ای است و از لحاظ سرعت کامپیوتر مشکلی نیست
    و من از oledb استفاده کرده ام
    OleDbConnection cn = new OleDbConnection(

    "provider=microsoft.jet.OLEDB.4.0;data source=tel.mdb");
    OleDbCommand cm = new OleDbCommand("select * from homes", cn);
    OleDbDataAdapter dr = new OleDbDataAdapter("select * from homes where family like " + "'%" + textBox1.Text + "'" , cn);
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    cn.Open();
    dr.Fill(dt);
    dataGridView1.DataSource = dt;
    لطفا مرا راهنمایی کنید
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.JPG‏ (27.6 کیلوبایت, 6 دیدار)

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    از روش ارائه شده در مقاله زیر استفاده کنید
    http://dotnetsource.com/fa/forum/def...?g=posts&t=207

  3. #3
    سلام ، با متود OleDbCommand.CommandTimeout می تونی زمان Timeout رو افزایش بدی . Timeout زمانی است که VS صبر می کنه تا از DB جواب بگیره . اگه توی این زمان جواب نیاد پیغام خطا میده . به طور پیش فرض این زمان 30 ثانیه است .
    امیدوارم این مشکلتو حل کنه . موفق باشید .

  4. #4
    نقل قول نوشته شده توسط behzadk مشاهده تاپیک
    سلام
    من یک table دارم تقریبا با 500000 رکورد وقتی من میخوام از table داده با Query استخراج کنم حدود یک دقیقه طول میکشد که به یک error می دهد که در زیر میزارم
    و در ضمن cpu من دو هسته ای است و از لحاظ سرعت کامپیوتر مشکلی نیست
    و من از oledb استفاده کرده ام
    OleDbConnection cn = new OleDbConnection(

    "provider=microsoft.jet.OLEDB.4.0;data source=tel.mdb");
    OleDbCommand cm = new OleDbCommand("select * from homes", cn);
    OleDbDataAdapter dr = new OleDbDataAdapter("select * from homes where family like " + "'%" + textBox1.Text + "'" , cn);
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    cn.Open();
    dr.Fill(dt);
    dataGridView1.DataSource = dt;
    لطفا مرا راهنمایی کنید

    سلام.
    اونطوری که از SQL کد فوق معلومه، شما دارید دنبال رکوردهایی می گردید که با کلمه خاصی پایان پذیرفته باشن. چون از LIKE استفاده می کنید، مدت زمان جستجو زیاد هست. شما باید از Full Text Search استفاده کنید، به این ترتیب سرعت جستجو بهبود پیدا میکنه.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تبریز
    پست
    501
    سلام
    تشکر از راهنمایی شما
    میشه یه کم بیشتر توضیح بدین
    با تشکر

  6. #6
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    نقل قول نوشته شده توسط behzadk مشاهده تاپیک
    سلام
    من یک table دارم تقریبا با 500000 رکورد وقتی من میخوام از table داده با Query استخراج کنم حدود یک دقیقه طول میکشد که به یک error می دهد که در زیر میزارم
    و در ضمن cpu من دو هسته ای است و از لحاظ سرعت کامپیوتر مشکلی نیست
    و من از oledb استفاده کرده ام
    OleDbConnection cn = new OleDbConnection(

    "provider=microsoft.jet.OLEDB.4.0;data source=tel.mdb");
    OleDbCommand cm = new OleDbCommand("select * from homes", cn);
    OleDbDataAdapter dr = new OleDbDataAdapter("select * from homes where family like " + "'%" + textBox1.Text + "'" , cn);
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    cn.Open();
    dr.Fill(dt);
    dataGridView1.DataSource = dt;

    لطفا مرا راهنمایی کنید
    1 - خوب این oledbcommand cm بنظر می رسد که اضافه هست
    2 - روی فیلد فامیلی توی دیتابیس ایندکس حتما بگذارید.
    3- چرا علامت درصد را قبل از اسم گذاشتید این یعنی مثلا دنبال اسامی بگرد که انتهاش به یک حرف یا کلمه ختم میشه. معمولا بر عکس این را انجام می دهند

    SELECT * FROM homes WHERE family LIKE N+"'"+textbox1.text +"%'"

    این کد بالا را امتحان کنید

  7. #7
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448
    به نظر من یکم رو ساختار database کار کن
    شاید بتونی یک کم قواعد نرمال سازی رو توش پیدا کنی تا بتونی جدولت رو بشکنی

    جدولی با 500هزار رکورد خیلی خطرناک حسن D:

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

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