tgoop.com/sql_server/817
Last Update:
حتما براتون پیش اومده که رفتین مثلا تره باری یا یک میوه فروشی ، شروع به جداکردن میوه ها کردین ، بعد اون متصدی غرفه اومده بالا سرتون که داداش جدا نکن درهمه. (البته الان وضعیت بهتر شده ولی قبلا زیاد بود)
حالا اگه شما میخواستین میوه های خوب رو جداکنید احتمالا مجبور بودین هزینه بیشتری پرداخت کنید.
آفرین ، SQL Server هم دقیقا همینه. وقتی یک نتیجه ای به شما میده اون نتیجه درهمه ، هیچ مرتب سازی نداره. یعنی برای اینکه شما نتیجه نهایی رو مرتب شده داشته باشین ، باید هزینه اونو بپردازین و قید کنید که براساس چی مرتب بشه.
اما یک چالش، شاید دیده باشین در کدهای مختلف که مثلا طرف یک VIEW نوشته یا یک Inline-Function نوشته و داخلش اومده یک Order گذاشته و SQL Server بهش خطا داده. این طرف هم رفته پیش مدیر فنیش که مثلا حمیدرضا این چرا خطا میده؟
حمیدرضا هم یک ژست ما خیلی خفنیم گرفته 😁 گفته برو یک Top 100 percent بذار حل میشه. این بنده خدا هم رفته گذاشته و تونسته اون Object رو ایجاد کنه. تو دلش گفته وای خدا،این حمیدرضا چه خفنه خیلی وارده 😁
ولی کجا گندش درمیاد.؟ زمانی که دوست عزیزمون یک Select از View میزنه و انتظار داره نتیجه مرتب شده برگردونده بشه ولی امااااااااا اصلا از این خبرا نیست.
اینجاست که حمیدرضا باید بره تو افق محو بشه 😂
حمیدرضا ندونسته که اون مرتب سازی داخل View , Function , CTE برای این هست که صرفا شما میخوای مثلا از Top یا Offset استفاده کنی و یک تعدادی رکورد برگردونی و داری میگی براساس چی مرتب باشه که من ۱۰-۱۰۰-۱۰۰۰ تای اول یا آخرش رو برگردونم. همین به خدا 😉 .
یعنی توی هر جایی چیزی غیر از این شنیدین اشتباهه.
هر نتیجه ای که قراره بگیرین و مرتب باشه باید در بیرونی ترین Select قید کنید که براساس چی مرتب باشه.
وقتی داخل یک View میاین مینویسین Top 100 percent یعنی همه دیتا رو براساس مثلا فیلد تاریخ مرتب کن و برگردون.کجا برگردونه؟ آفرین اون Select درونی توی View. حالا زمانی که من میخوام از View استفاده کنم اون میاد داخلش داده هارو فیلتر میکنه که میشه همه داده ها وبراساس تاریخ مرتب میکنه. حالا روی این نتیجه میاد Select میزنه ولی اینجا که شما هیچ مرتب سازی قید نکردین! دوباره مرتب سازی شما بهم میخوره و باید حتما این رو قید کنید که براساس چی باید مرتب بشه.
امیدوارم این توضیح من برای همیشه این مساله رو در ذهنتون حل کنه که کاربرد Order by , Offset در کلا Table Expression ها برای چیه.
BY SQL Server
Share with your friend now:
tgoop.com/sql_server/817