0 امتیاز
قبل در برنامه نویسی توسط (760 امتیاز)
ویرایش شده قبل توسط
یه قضیه ای بود به نام Query Optimizer!

و ربطش به سئوال بنده اینه که اگر بخواهیم یک کوئری از دیتابیس یا جدولمون بگیریم، از کجا بفهمیم که بهترین روش ممکن رو داریم اجرا می کنیم؟

مثال :

از دو استاد باتجربه که سئوال کردم گفتند که برای اتصال دو جدول Join  از Where سریعتر عمل میکنه (توی کوئری های سنگین)

 می خوام بدونم روش یا برنامه یا متدی هست که بتونه کوئری من رو Tune ، تقویت و سریع کنه؟

3 پاسخ

+2 امتیاز
قبل توسط (760 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

جوابی که می خواستم رو پیدا کردم!

از طریق امکانی در DBMS میشه این حرکت انقلابی (!) رو انجام داد :

SQL Profiler که میتونید از این سایت ریز به ریز مطلع شوید :

CodeProject

فوق العاده ــس

+2 امتیاز
قبل توسط (402 امتیاز)

برای این کار برنامه ای وجود نداره که مثلا شما یه query درب و داغون بهش بدید و اون یه query سریع بهینه شده به شما تحویل بده. شما باید حتی الامکان خودتون بتونید خوب query بزنید، بعضی اوقات هم می تونه خیلی پیچیده باشه. یه سری موارد ساده رو تو این لینک می تونید ببینید.

در هر حال خود مثلا SQL server و یا Oracle هم وقتی یه query بهشون بدی، با توجه به الگوریتم هایی که دارن plan های مختلفی رو برای اجراش در نظر می گیرن و بهترینش رو انجام می دن، یه DBMS باهوش مثلا اگر طبق مثال شما به جای join از where استفاده کردید، این رو تشخیص می ده و همون  plan ای رو اجرا می کنه که انگار از اول شما با join نوشتی، تفاوت یه DBMS با دیگری هم تو همین جا ها مشخص می شه.

اگر دوست دارید کلیات این الگوریتم ها رو بدونید می تونید به کتاب سیلبرشاتس مراجعه کنید.

+2 امتیاز
قبل توسط (1.1هزار امتیاز)
اگر شما یک query را به چند روش پیاده سازی کنید برای مقایسه بین آن چند روش. معمولا dbms ها ابزارهایی برای محاسبه هزینه اجرای query یا همان cost دارند که می توانید با استفاده از آن ابزارها راه کم هزینه تر را پیدا کنید.

سوالات مشابه

0 امتیاز
0 پاسخ 315 بازدید
0 امتیاز
1 پاسخ 457 بازدید
0 امتیاز
1 پاسخ 1.1هزار بازدید
+2 امتیاز
1 پاسخ 3.0هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
0 امتیاز
2 پاسخ 1.4هزار بازدید
...