تاثیر نحوه نوشتن پرس و جو بر سرعت اجرای آن در SQL Server - نسخهی قابل چاپ +- انجمن وب سایت مشاوره در زمینه پروژه های برنامه نویسی و طراحی وب سایتهای تجاری (http://forum.a00b.com) +-- انجمن: سوالها و مقاله های آموزشی (/forumdisplay.php?fid=1) +--- انجمن: مقاله های آموزشی (/forumdisplay.php?fid=3) +--- موضوع: تاثیر نحوه نوشتن پرس و جو بر سرعت اجرای آن در SQL Server (/showthread.php?tid=21) |
تاثیر نحوه نوشتن پرس و جو بر سرعت اجرای آن در SQL Server - ali - 06-20-2014 01:05 PM سلام. در این مطلب میخوام یک تجربه شخصی در مورد نحوه نوشتن پس و جو (Query) و تاثیر آن بر سرعت اجرا رو براتون توضیح بدم. این نکته رو هم خدمتتون عرض کنم که بهترین روش توی هر کاری اینه که مقاله ها و دست آوردهای جدید رو بخونین تا بتونین به بهترین نحوی کارهاتون رو انجام بدین. این ترفند بیشتر در رکوردهای تعداد بالا به درد می خوره. چون توی رکوردهای زیر هزار تا سرعت زیاد تفاوتی نمی کنه ولی در رکوردهای بالای ده هزار تا معمولا اگر روش مناسبی برای پرس و جو نوشتن انتخاب نکنین حتما منابع سیستم شما (Server) احتمالا زیاد از حد مشغول میشه. فرض می کنیم سه جدول با عنوانهای زیر داریم:
کد: DECLARE @start_time DATETIME در روش دوم بدون استفاده از join ها ارتباط بین جدول ها را ایجاد می نمائیم. در حقیقت در این روش بدون ارتباط فیزیکی بین جدولها ، رکوردهای مرتبط در سایر جدولها را فراخوانی می نمائیم. لازم به ذکر است که نوشتن پرس و جو در روش دوم کمی نیاز به مهارت دارد. روش دوم زیاد پیشنهاد نمی شود. ولی در بعضی مواقع می تواند نجات دهنده باشد. دقت در روش دوم بسیار بیشتر است. کد: DECLARE @start_time DATETIME روش اول برای 5200 رکورد و 100 تکرار میانگین به دست آمده 183 میلی ثانیه روش دوم برای 5200 رکورد و 100 تکرار میانگین به دست آمده 109 میلی ثانیه نتیجه بدست آمده نشان می دهد که روش دوم منابع SQL Server را کمتر از روش اول (اسفاده از Join ها) درگیر می نماید. بنابراین در محلی که تعداد تراکنشها بیشتر است بهتر است از روش دوم استفاده شود ولی در تعداد تراکنشهای پایین روش اول مفیدتر است. در آزمایش دیگری که بر روی یک سیستم نسبتا قوی با پردازنده و RAM بالا انجام شد نتیجه کماکان به همان شرح بود. من نتایج رو درون یک فایل اکسل براتون گذاشتم. نمودار تراکنشها وقتی که تعداد رکوردها 100000 و تعداد واکشی حدودا 500 بار بود به شرح عکس می باشد. البته اعداد مربوط به آزمایشها داخل فایل اکسل موجود است و نمودار رو هم می توانید آنجا ملاحظه بفمرائین. هر چه تعداد رکوردها و تعداد واکشی ها بیشتر شود کارآیی Join ها کمتر می شود. لینک دانلود فایل اکسل |