PDA

View Full Version : مشکل در کندی برنامه



Julias99
یک شنبه 04 آبان 1393, 11:42 صبح
سلام دوستان
من بانک اطلاعاتیبرنامم روی شبکه قرار گرفته و سرعت فراخانی داده از اس کیو ال پایینه
یکی گفت سعی کن تو بانکت تعداد جداولت بیشتر باشه تا فیلد هات (یعنی فیلدها کم باشه جدول ها زیاد)
یکی دقیقأ بلعکس اینو گفت
یکی گفت کوئری هایی که میزنی جوین توش زیاده سعی کن تعداد جوین هات کم بشه
و ...
کدومش اصولی و منطقیه ؟

plus
یک شنبه 04 آبان 1393, 15:10 عصر
در حالت کلی شما باید هم پیچیدگی Query های نوشته شده رو کم کنی و هم حجم داده هایی که رد و بدل میشه رو.لزوما این دو با هم تداخل ندارن.
اما در مورد مشکل شما، اگه کندی بخاطر حجم داده های انتقال داده شده در شبکه هست، شما Query های پیچیده تر و در عوض حجم داده انتقال یافته کمتری -در شبکه- داشته باشی تاخیر رو کاهش میدی.
ولی اگه کندی بخاطر پردازشی هست که در DBMS برای پاسخ گویی به Query ها انجام میده، شما با ساده تر کردن Query ها میتونی تاخیر رو کمتر کنی.
برای فهمیدن اینکه مشکل کدوم هست، شما اگه روی سیستمی که دیتابیس قرار داده هم تاخیر داری، پردازش هات سنگینه. اگه فقط روی سیستم های شبکه تاخیر داری، مشکل از حجم داده هایی هست که در شبکه منتقل میشه.
البته اغلب مشکل از حجم داده هاست.

vahidganji
یک شنبه 04 آبان 1393, 15:14 عصر
میشه یکی هم به این تاپیک جواب بده:متفکر:
http://barnamenevis.org/showthread.php?473688-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87&p=2123798#post2123798

Julias99
دوشنبه 05 آبان 1393, 12:23 عصر
بعد موضوعی که هست اینه که کوئری زیر حدود 2800 رکورد بر میگردونه که حدود 5 ثانیه طول میکشه . اغلب تا 10 ثانیه هم میره

var adMoshaver =
new SqlDataAdapter(
"SELECT (SELECT TOP (1) ID FROM Event_TB WHERE (M.ID = customer_id) ORDER BY id DESC) AS Event_ID , ID, regdate, Username, Name, Family, Address, NationalID, PostalCode, FathersName, Password, RoleID, ImageName, IsActive, IsCustomer, calltype, callin, (SELECT TOP (1) Description FROM Event_TB WHERE (M.ID = customer_id) ORDER BY id DESC) AS Description , (SELECT TOP (1) resualt FROM Event_TB WHERE (M.ID = customer_id) ORDER BY id DESC) AS resualt , (SELECT TOP (1) resualt_modir FROM Event_TB WHERE (M.ID = customer_id) ORDER BY id DESC) AS resualt_modir FROM Customer_TB AS M WHERE Username ='" +"yekta" + "' order by id desc",_sqlConnection); //and regdate = '"+Strdate+"'
var ds = new DataSet();
adMoshaver.Fill(ds, "customer_tb");
DGV_Customer.DataSource = ds.Tables["customer_tb"];

mreram
دوشنبه 05 آبان 1393, 12:41 عصر
sp ها سرعتشون بالاتره ازونا هم استفاده کنی بد نیست

fakhravari
دوشنبه 05 آبان 1393, 12:42 عصر
فقط روی حالت select fild باینری هست که سرعت میگیره.
وگرنه فکر نکنم روی فیلد های رشته ای سرعت خاصی بگیره