ورود

View Full Version : بالا بردن سرعت دستورات sql



mansoure_p
سه شنبه 23 تیر 1394, 17:39 عصر
سلام ، من یه وب سایتی دارم که به یک دیتابیسی متصل هست که حجم خیلی بالایی از مقالات در یکی از جداولش هست. کار اصلی که این وب سایت انجام میده جست و جوی مقالات هست،مشکل من اینجاست که عمل جست و جو انجام میشه ولی خیلی کند!!! برای اینکه خطای request time out نده مجبور شدم oCmd.CommandTimeout = 0 قرار بدم.ocmd همون sqlcommand هست.میخواستم بدونم راهی وجود داره که سرعت رو بالاتر برد؟ یا هر راه حل دیگه ؟ وب سایت به زبان VB نوشته شده.نهایتا دستوری که به sql فرستاده میشه اینه.
133247

یه توضیحم بدم : جدول مقالات tblArticles هست.جدول tblJST جدولی هست که مقالات در اون دسته بندی شدند .مثلا فلان مقاله مربوط به فلان مجله هست.
contain هم که میدونید.به خاطر کند بودن مجبور شدم یک سری دستورات که مربوط به دسته بندی بر اساس تاریخ بود و یا فیلد های جست و جو رو کم کنم، که به نظرم لازم بود باشن. :ناراحت:یا مثلا فقط 35 سطر اول رو انتخاب کنم.

mansoure_p
چهارشنبه 24 تیر 1394, 14:23 عصر
ایا filegroup جواب میده؟ کمک!!!!!!!!!!!!!!

xsbehx
چهارشنبه 24 تیر 1394, 18:23 عصر
اینجا رو ببینین (http://barnamenevis.org/showthread.php?500598-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D9%86%D9%85%D9%88%D8%AF%D9%86-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C)

MNosouhi
پنج شنبه 25 تیر 1394, 00:14 صبح
سلام ، من یه وب سایتی دارم که به یک دیتابیسی متصل هست که حجم خیلی بالایی از مقالات در یکی از جداولش هست. کار اصلی که این وب سایت انجام میده جست و جوی مقالات هست،مشکل من اینجاست که عمل جست و جو انجام میشه ولی خیلی کند!!! برای اینکه خطای request time out نده مجبور شدم oCmd.CommandTimeout = 0 قرار بدم.ocmd همون sqlcommand هست.میخواستم بدونم راهی وجود داره که سرعت رو بالاتر برد؟ یا هر راه حل دیگه ؟ وب سایت به زبان VB نوشته شده.نهایتا دستوری که به sql فرستاده میشه اینه.
133247

یه توضیحم بدم : جدول مقالات tblArticles هست.جدول tblJST جدولی هست که مقالات در اون دسته بندی شدند .مثلا فلان مقاله مربوط به فلان مجله هست.
contain هم که میدونید.به خاطر کند بودن مجبور شدم یک سری دستورات که مربوط به دسته بندی بر اساس تاریخ بود و یا فیلد های جست و جو رو کم کنم، که به نظرم لازم بود باشن. :ناراحت:یا مثلا فقط 35 سطر اول رو انتخاب کنم.
می خواهی در متن مقالات چستجو کنی و یا فقط عنوان مقاله را ؟ اما به هر حال :
1- از * در دستور Select استفاده نکن (نام تک تک فیلدهات را بنویس) زیرا در این حالت از ایندکس های جدولت به درستی استفاده نمیشه .
2-سعی کن فقط از inner join استفاده کنی. سایر join ها باعث کاهش Performance میشند.
3-با استفاده Executetion Planو Query Optimizer ، سعی کن ایندکس های جدولت را بهینه کنی.
4- در صورتی امکان اطلاعات را پارتیشن کن ، خیلی تو سرعت موثره .
5-از امکانات جدید نسخه های جدید SQL مانند Column Stored Index و یا Memory Optimized Table استفاده کن
و ...

mansoure_p
پنج شنبه 25 تیر 1394, 18:57 عصر
میشه لطفا درباره پارتیشن بندی و یا query optimizer توضیح بدید؟

majjjj
پنج شنبه 15 مرداد 1394, 07:13 صبح
میشه لطفا درباره پارتیشن بندی و یا query optimizer توضیح بدید؟
ما از پارتیشن بندی زمانی استفاده میکنیم که بخواهیم سرعت را بالا ببریم و به این صورت است که فیلد هایی که دارای یک نوع داده ای هستند را در یک گروه قرار میدهیم مثل کلاس اول دبستان برای کسایی که تازه وارد مدرسه میشن با این کار عمل تشخیص برای sql server سریع تر انجام میشه.
query optimizer هم زمانی که میخواهیم بهینه سازی و افزایش سرعت کار را داشته باشیم استفاده میکنیم . یعنی میخواهیم کد نوشته شده را در یک وضعیت بهینه (بهترین وضعیت ممکن) داشته باشیم
در کل
روش عمودی و افقی و بهینه سازی و ارتقا سخت افزار و پهنای باند میتونه به شما کمک چشمگیری بکنه

majjjj
پنج شنبه 15 مرداد 1394, 07:23 صبح
و اما در مورد کد شما
یک عمل مرتب سازی دارید که باعث میشه شما هزینه زمانی برای ان داشته باشید اگه میتونید اون رو سمت کلاینت ببرید تا سرور حافظه کمتری برای این پروسیجر لازم داشته باشه یعنی عملیات را توزیع کنید
اون کانتین هم معمولا باعث کند شدن سرعت به علت عدم استفاده از ایندکس ها میشه.

mansoure_p
یک شنبه 18 مرداد 1394, 11:37 صبح
ممنون از راهنماییتون.
تا حالا با نرم افزار sphinx کار کردید؟