PDA

View Full Version : سوال: کندی اجرای دستورات در افزودن تعداد رکوردهای بالا



mehran6764
یک شنبه 13 مرداد 1392, 17:19 عصر
سلام
من برنامه ام جوریه که باید 2500 رکورد رو همزمان به دیتابیس بفرستم ، ولی موقع افزوده شدن این مشکل پیش میاد که سیستم برای چند لحظه هنگ می کنه و اگر کاربر در اون چند لحطه برنامه رو ببینده تعداد رکوردهایی که اضافه میشن کمتر از 2500 هستند..
چطوری سرعت رو بالا ببرم ؟ یا از هنگیدن جلوگیری کنم و ..

parvizwpf
یک شنبه 13 مرداد 1392, 17:23 عصر
کد اینزرتتون چیه؟

mehran6764
یک شنبه 13 مرداد 1392, 17:53 عصر
SqlCommand objcommand = new SqlCommand();
objcommand.Connection = objonnection;
objcommand.CommandText = "INSERT INTO logtb (ide,Username, pass)" + "VALUES(@ide,@Username, @pass)";
objcommand.Parameters.AddWithValue("@ide", count);
objcommand.Parameters.AddWithValue("@Username", textBox1.Text);
objcommand.Parameters.AddWithValue("@pass", textBox2.Text);


objcommand.ExecuteNonQuery();
objonnection.Close();






برا اینکه سریع تر جواب بگیرم این کدو رو مثال می زنم - داخل حلقه for نوشتنم- یکی از فیلدها مقدار i رو می گیره و مرتب تغییر می کنه -

parvizwpf
یک شنبه 13 مرداد 1392, 17:58 عصر
ای بدترین حالتشه چون هی داره اینزرت میکنه خیلی جالب نیست.
شما توی اس کیو ال چیزی به این شکل داری:

insert into tbl(name) vaues(
'1',
'2',
'3',
.
.
.

بهتره اینو بسازی بعد یک دستور excute یزنی آخرش.

mehran6764
یک شنبه 13 مرداد 1392, 18:14 عصر
ممنون ، حل شد

parvizwpf
سه شنبه 15 مرداد 1392, 00:09 صبح
چطور میشه بگید؟

mehran6764
سه شنبه 15 مرداد 1392, 06:55 صبح
خوب شد اینو پرسیدن ، چون من وقتی تعداد رکوردها رو بیشتر از 2000 تا کردم دیدم بازم اساس مشکل حل نشده است اما دیگه روم نشد بیام بگم ::لبخند:
با روشی که گفتین و اینکه چون پارامترهای کوئری من اولش string بوند - اونا رو به stringbuilder تبدیل کردم سرعت اجرا بالا رفت
ولی اساس مشکل باقی موند که من مجبور شدم کدهامو از ریشه تغییر دادم و تا الان هم بیدارم :لبخند:- ولی هنوزم برام سواله تو جاهایی که لازمه تعداد رکوردها
بالا باشه چی کار می کنن

webtracker
سه شنبه 15 مرداد 1392, 09:02 صبح
شما از کلاس می تونید به صورت bulk هایی داده ها رو وارد کنید sqlbulckcopy (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx)