آموزش کوئری نویسی در SQL ( نحوه مقایسه کارایی دو کوئری ) : همونطور که میدونین اگر یک پرس و جو رو به افراد متفاوتی بدیم، ممکنه هر فرد برا ی تولید خروجی مورد نظر، کوئری های متفاوتی طراحی کنه.
یک سؤال که مطرح میشه این هست که چطور این کوئری ها رو مقایسه کنیم و بهترین کوئری ( از دید Performnce) رو انتخاب کنیم.
اولین موردی که برای مقایسه به ذهن هر کسی خطور میکنه، زمان اجرای کوئری یا Execution Time هست. ( که البته مبنای مقایسه اشتباهی هم نیست)
اما اگر بخوایم مقایسه دقیق تری داشته باشیم. ( مثلا اگر زمان احرای چند کوئرد باه برابر باشه). یکی از Option هایی که میتونیم فعال کنیم Statistics IO هست. که میزان IO انجام شده به ازای کوئرد رو نمایش میده.
آموزش کوئری نویسی در SQL :
نمایش آمار IO به ازای اجرای کوئرد:
Set Statistics IO ON
بعد از اجرای دستور بالا، اطلاعات IO اجرای کوئری در قسمت Message به ما نمایش داد می شود که شامل Logical Read – Physical Read , Scan count می باشد.
مقدار Physical Read معرف تعداد صفحه ای (Page) است که از هارد (Physic) خونده میشه و
مقدار Logical Read معرف تعداد صفحه ای (Page) است که از Cache خوانده می شود. (قبلا در حافظه موجود بوده و به هارد مراجعه نمی شود)
پس هر چه مقدار این دو (Physical Read – Logical Read) کمتر باشه، نشون میده که کوئری بهتری برای اجرا خواهیم داشت
مقدار Scan Count رو در ادامه توضیح خواهم داد
Physical/Logical Read
Set Statistics Io on
با سلام و خسته نباشی من در نوشتن برنامه اس کیو ال چند تا سوال که برای هتل است با مشکل مواجه شدم می توانید کمکم کنید لظفا
۱-تعداد کل مسافرانی که از ابتدا تا کنون در هر اتاق ساکن بوده ان
۲-تعداد کل مسافرانی که هر اتاق در هر سال پذیرایی کرده است
۳-نام مسافرانی که در هر سال بیشترین مدت اقامت در هر هتل را داشته اند به همراه تعداد روز اقامت آنها
۴-تعداد کل مبلغی که هر کارمند در هر روز از مشتریاندریافت کرده است
۵-شماره کارمندانی که تا کنون اتاق ۱۰۱ را رزرو داده اندبه شرط آنکه اتاق ۱۰۲ را رزرو نداشته باشند
۶-مجموع درآمدی که هر اتاق در هر سال برای هتل داشته است
۷-لیست اتاق عایی که در هر سال خالی منده اند
سلام وقتتون بخیر
یه سوال راجب کوئری ها در sql server خودم داشتم
دو جدول دانشجو و ترم رو در نظر بگیرید
نام نام خانوادگی دانشجویانی که بالاترین نمره رو داشتن؟
در قسمت max کوئریم بهم خطا میده
ممنون میشم منو داهنمایی کنید🙏