View Full Version : سنگینی جستجو در جدولی با رکوردهای زیاد
omid.n1990
چهارشنبه 12 فروردین 1394, 01:13 صبح
سلام.
سوالم این هست که مثلا من یک جدول محصولات دارم. که کلی اطلاعات توش ذخیره میخوام بکنم. تا حالا با همچین دیتابیسی کار نکردم که حجم اطلاعاتش اینقدر بالا بره. شما فرض کنید یک نمونه ای مثل سایت دیوار باشه که میلیونها اطلاعات رو میخواد نگه داره. آیا سایت دیوار برای محصولاتش مثلا "لوازم الکترونیک"، یک جدول تنها در نظر میگیره؟ اینطوری یک جدول ممکنه لاقل صدها هزار رکورد داشته باشه و واکشی اطلاعات دردسرساز.
راهکار اینجور مواقع چیه؟
meisam12
چهارشنبه 12 فروردین 1394, 22:46 عصر
بهترین راه نوشتن کوئری بهینه می باشد.
برای مثال شما زمانی که می خواهید جستجو انجام دهید اگه نیاز به 20 رکورد دارید کوئری بنویسید که فقط 20 تا رکورد را برگردونه.
omid.n1990
پنج شنبه 13 فروردین 1394, 00:13 صبح
آیا درست کردن view میتونه مفید باشه؟؟
علاوه بر ایجاد ایندکس و کوئری مناسب آیا راهکار دیگری برای بهبود سرعت واکشی اطلاعات وجود ندارد؟
sunn789
پنج شنبه 13 فروردین 1394, 00:20 صبح
دوسا عزیز ، کار با بانک اطلاعاتی خودش مباحث کاملاً جدایی است و نه view زیاد مهم نیست مباحت performance o رو اگر جستجو کنی خیلی چیز ها خواهی دید ، اما در بحث اول طراحی جدول خیلی مهم است بعد از آن استفاده از منابع sql server به این معنی که کوئری ها را با SP جایگزین کنی ، و در انتها نوشتن کوئری نیز مهم هست که فقط تعداد رکوردهای مورد نظر را دریافت کند
mehdin69
پنج شنبه 13 فروردین 1394, 23:57 عصر
چندتا نکته رو رعایت کن
نمیدونم کارت چی هست و چی نوشتی اما این چیزا رو رعایت کن
اول Index ها رو درست کن
از Index های پیشنهادی Sql استفاده کن و ببین چه چیزایی توی Index نداشتی
بعد بیا Include Index ها رو درست کن
بعد بیا Memory Table استفاده کن
بعد View بساز و روی View ایندکس گذاری کن
و در آخر Sp های dll ای درست کن
با اینا احتمالاً تغییرات رو مشاهده میکنی
ali_72
یک شنبه 16 فروردین 1394, 08:48 صبح
چندتا نکته رو رعایت کن
نمیدونم کارت چی هست و چی نوشتی اما این چیزا رو رعایت کن
اول Index ها رو درست کن
از Index های پیشنهادی Sql استفاده کن و ببین چه چیزایی توی Index نداشتی
بعد بیا Include Index ها رو درست کن
بعد بیا Memory Table استفاده کن
بعد View بساز و روی View ایندکس گذاری کن
و در آخر Sp های dll ای درست کن
با اینا احتمالاً تغییرات رو مشاهده میکنی
ممنون دوست عزیز
میشه درباره مواردی که گفتید بیشتر توضیح بدید؟ من دقیق متوجه نشدم
چیزی که خود من رعایت میکنم ایناست:
1- اول اینکه تا toList استفاده نکنی در واقع کوئری به پایگاه داده داده نشده پس تمام شرط ها قبل از ارسال دستور باید داده شده
2- از صفحه بندی استفاده کنیم در این صورت ما همیشه تعداد خاصی رکورد از پایگاه داده می گیریم نه تمام رکوردها رو
3- از ASNoTraking قبل toList استفاده کنیم که دلیل استفاده مفصله
4- از لیزی لودینگ در ef حتما استفاده کنیم
5- فیلدهایی که نیاز دارید select شه نه تمام اطلاعات جدول
6- بهتره از viewmodel استفاده کنی از کلاس اصلی جدول استفاده نکنیم
اگه موردایی که گفتم ایرادی داره ممنون میشم دوستان راهنمایی کنند
mehdin69
یک شنبه 16 فروردین 1394, 08:59 صبح
اگه میخوای سرعتت بالا باشه باید sp و view های مناسب و با شرایطی که گفتم و جدولتم اگه بتونی بکن memory in table بعد بیایی سمت ef و ازشون استفاده کنی که این کارا کنی ۱۰۰۰۰۰۰ رکورد حدود ۱ ثانیه بهت جواب میده
ali_72
یک شنبه 16 فروردین 1394, 09:07 صبح
جدولتم اگه بتونی بکن memory in table ب
چطور این کار رو انجام بدم؟
mehdin69
یک شنبه 16 فروردین 1394, 10:45 صبح
چطور این کار رو انجام بدم؟
سلام
من همه اصلاحاتی که باید سرچ کنی رو نوشتم واست
هر کدومم از اینها یه فصل از یه کتابه چه طور واست اینجا توضیح بدم :|
ali_72
یک شنبه 16 فروردین 1394, 12:27 عصر
سلام
من همه اصلاحاتی که باید سرچ کنی رو نوشتم واست
هر کدومم از اینها یه فصل از یه کتابه چه طور واست اینجا توضیح بدم :|
کاملا درسته
ممنون از راهنماییت
مواردی که گفتی رو سرچ میکنم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.