دستورات sql در پایگاه داده

آشنایی با دستورات sql در پایگاه داده

موتور پایگاه داده سرور SQL به شما امکان دستورات sql در پایگاه داده می دهد پرس و جوها را در معماری های ذخیره سازی داده های مختلف پردازش کنید، مانند جداول محلی، جداول پارتیشن بندی شده و جداول پراکنده در چندین سرور. عناوین زیر پردازش پرس و جو و بهینه سازی استفاده مجدد از پرس و جو سرور SQL را با کش کردن برنامه های اجرایی توضیح دستورات sql در پایگاه داده می دهند.روش های اجرا.موتور پایگاه داده SQL Server می تواند دستورات sql در پایگاه داده عبارات Transact-SQL را با استفاده از دو حالت پردازش مجزا پردازش کند:

اجرای حالت ردیف یک روش پردازش پرس و جو است که با جداول سنتی RDBMS استفاده می شود، جایی دستورات sql در پایگاه داده که داده ها در قالب ردیف ذخیره می شوند. هنگامی که یک پرس و جو اجرا می شود و به داده ها در جداول rowstore دسترسی پیدا می کند، عملگرهای درخت اجرا و عملگرهای فرزند هر سطر ضروری را در تمام ستون های مشخص شده در طرح جدول می خوانند. از هر ردیف خوانده شده، SQL Server ستون های مورد نیاز برای مجموعه نتایج را بازیابی می کند، همانطور که با عبارت SELECT، محمول JOIN، یا محمول فیلتر نشان داده شده است.

پیشنهاد می کنیم به مشاهده مقاله دستورات sql چیست بپردازید.

 

دستورات sql در پایگاه داده

اجرای حالت ردیف برای سناریوهای OLTP بسیار کارآمد است، اما در هنگام تجزیه دستورات sql در پایگاه داده و تحلیل مقادیر زیادی از داده ها، مانند سناریوهای مربوط به انبارهای داده، می تواند کارایی کمتری داشته باشد.در حالت دسته ای اجرا شود اجرای حالت دسته ای یک روش پردازش پرس و جو است که به وسیله آن کوئری ها چندین ردیف را همزمان پردازش می کنند. هر ستون در یک دسته به عنوان یک بردار در یک منطقه جداگانه از حافظه ذخیره می شود، بنابراین پردازش حالت دسته ای مبتنی بر برداری است.

پردازش حالت دسته‌ای همچنین از الگوریتم‌های بهینه‌سازی شده برای CPUهای چند هسته‌ای و ظرفیت حافظه بالاتر سخت‌افزار مدرن استفاده می‌کند.هنگامی که برای اولین بار معرفی شد، اجرای حالت دسته ای به شدت با فرمت ذخیره سازی ستونی ادغام و بهینه شده بود. با این حال، شروع SQL Server 2019 (15.x) به و از پایگاه داده Azure SQL، اجرای در حالت دسته‌ای دستورات sql در پایگاه داده دیگر نیازی به فهرست ستون‌ها ندارد. برای اطلاعات بیشتر، حالت دسته ای برای Rowstore را ببینید.

پیشنهاد می کنیم به مشاهده مقاله مفاهیم پایگاه داده sql server بپردازید.

پردازش حالت دسته‌ای روی داده‌های فشرده، زمانی که در دسترس باشد، کار می‌کند و عملگرهای مبادله‌ای را که در اجرای حالت ردیف استفاده می‌شوند حذف می‌کند. نتیجه موازی سازی بهتر و عملکرد سریعتر است. هنگامی که یک پرس و جو در حالت دسته ای اجرا دستورات sql در پایگاه داده می شود و به داده ها در فهرست های فروشگاه ستون دسترسی پیدا می کند، عملگرهای درخت اجرا و عملگرهای فرزند چندین ردیف را با هم در بخش های ستون می خوانند.

SQL Server فقط ستون های مورد نیاز برای نتیجه را می خواند، همانطور که با عبارت SELECT، محمول JOIN یا محمول فیلتر نشان داده شده است. برای اطلاعات بیشتر در مورد نمایه‌های ستون‌فروشی، به معماری نمایه ستون‌فروشی مراجعه کنید.توجه داشته باشیداجرای حالت دسته ای در سناریوهای مربوط به “دستورات sql در پایگاه داده” انبارهای داده که در آن مقادیر زیادی داده خوانده و جمع آوری می شود بسیار کارآمد است.پردازش بیانیه SQLپردازش یک دستور Transact-SQL ساده ترین راه برای اجرای دستورات Transact-SQL در SQL Server است.

برای نشان دادن فرآیند اصلی، از فرآیند پردازش یک دستور SELECT استفاده می‌شود که فقط به جداول پایه محلی ارجاع می‌دهد، نه نماها یا جداول از راه دور.ترتیب تقدم عملگرهای منطقی اگر چندین عملگر منطقی در یک دستور استفاده شود، ابتدا NOT، سپس AND و در نهایت OR ارزیابی می شود. عملگرهای حسابی (و بیتی) قبل از عملگرهای منطقی ارزیابی می شوند. برای اطلاعات بیشتر، اولویت اپراتور را ببینید.در مثال زیر شرط رنگ برای محصول مدل دستورات sql در پایگاه داده 21 است نه محصول 20 زیرا AND بر OR اولویت دارد.

می‌توانید با اضافه کردن پرانتز برای لغو عملگر OR به ترتیب ارزیابی، معنای کوئری را تغییر دهید. جستجوی زیر فقط محصولات قرمز مدل 20 و 21 را پیدا می کند.استفاده از پرانتز، حتی در مواقعی که لازم نیست، می تواند به خوانایی بیشتر درخواست ها و کاهش خطر خطاهای اولویت اپراتور کمک کند. همچنین هیچ اثر سوء مادی بر عملکرد ندارد. مثال زیر خواناتر از نمونه قبلی دستورات sql در پایگاه داده است، اگرچه دو مثال از نظر نحوی یکسان هستند.

 

sql

 

را که سرور پایگاه داده برای بازیابی داده‌های درخواستی باید انجام دهد، تعریف نمی‌کند. بنابراین سرور پایگاه داده باید عبارت را تجزیه کند تا موثرترین روش استخراج داده را تعیین کند. این رویه که بهینه سازی عبارت SELECT نامیده می شود، توسط دستورات sql در پایگاه داده جزء Query Optimizer انجام می شود. داده های ورودی Query Optimizer شامل پرس و جو، طرح پایگاه داده (تعریف جدول و فهرست) و آمار پایگاه داده است. خروجی Query Optimizer یک طرح اجرای پرس و جو است که گاهی به عنوان طرح پرس و جو یا طرح اجرا نیز از آن یاد می شود.

شرح مفصلی از محتویات یک طرح اجرایی در ادامه این مبحث ارائه شده است.داده های ورودی و خروجی Query Optimizer هنگام بهینه سازی یک عبارت SELECT در نمودار زیر نشان داده شده است:قالب مجموعه نتیجه. این مورد در بیشتر موارد در لیست انتخاب مشخص شده است. با این حال، بندهای دیگر، مانند ORDER BY و GROUP BY، می توانند بر فرمت نهایی مجموعه نتایج تأثیر بگذارند.جداول حاوی داده های منبع. حالت در عبارت FROM مشخص شده است.

پیشنهاد می کنیم به مشاهده مقاله آموزش کامل دستورات sql server بپردازید.

رابطه منطقی بین جداول به منظور دستور SELECT. این عنصر در مشخصات join تعریف شده است که دستورات sql در پایگاه داده در عبارت WHERE یا در یک عبارت ON به دنبال یک عبارت FROM گنجانده شده است.شرایطی که سطرهای جداول منبع باید داشته باشند تا در نتیجه عبارت SELECT قرار گیرند. این شرایط در بندهای WHERE و HAVING مشخص شده است.طرح اجرای یک پرس و جو شامل تعریف عناصر زیر است:ترتیب دسترسی به جداول منبع معمولاً سرور پایگاه داده می تواند.

از توالی های مختلف برای دسترسی به جداول پایه و سپس کامپایل مجموعه نتایج استفاده کند. به عنوان مثال، اگر دستور SELECT به سه جدول ارجاع دهد، سرور پایگاه داده می تواند ابتدا به TableA دسترسی داشته باشد، از دستورات sql در پایگاه داده داده های TableA برای استخراج ردیف های مربوطه از TableB استفاده کند و سپس از داده های TableB برای استخراج داده ها از TableC استفاده کند. موارد زیر سایر توالی دسترسی به جداول است که می تواند توسط سرور پایگاه داده استفاده شود.

روش های مورد استفاده برای استخراج داده ها از هر جدول.معمولاً راه های مختلفی برای دسترسی به داده های هر جدول وجود دارد. اگر فقط به دستورات sql در پایگاه داده چند ردیف با مقادیر کلیدی خاص نیاز باشد، سرور پایگاه داده می تواند از یک شاخص استفاده کند. اگر تمام ردیف های جدول مورد نیاز باشد، سرور پایگاه داده می تواند ایندکس ها را نادیده بگیرد و تجزیه و تحلیل جدول را انجام دهد. اگر به تمام ردیف‌های یک جدول نیاز دارید، اما فهرست شامل ستون‌های کلیدی است که در یک عبارت ORDER BY گنجانده شده‌اند.

توصیه می‌کنیم برای جلوگیری از مرتب‌سازی مجزای مجموعه نتایج، فهرست را به جای جدول تجزیه کنید. اگر یک جدول بسیار کوچک است، تجزیه جدول می تواند کارآمدترین روش برای تقریباً هر گونه دسترسی به جدول باشد.روش‌های مورد استفاده برای دستورات sql در پایگاه داده انجام محاسبات و روش‌های مورد استفاده برای فیلتر، تجمیع و مرتب‌سازی داده‌ها از هر جدول.اگر از جداول به داده‌ها دسترسی دارید، می‌توانید از روش‌های مختلفی برای انجام محاسبات روی داده‌ها استفاده کنید.

مانند محاسبه مقادیر اسکالر، برای جمع‌آوری و مرتب‌سازی داده‌ها همانطور که در متن query تعریف شده است، مانند زمانی که از یک بند GROUP BY یا ORDER BY استفاده می‌کنید. و برای فیلتر کردن داده ها، به عنوان مثال هنگام استفاده از عبارت WHERE یا HAVING.فرآیند انتخاب طرح اجرایی بهینه سازی نامیده می شود. Query Optimizer یکی از مهمترین اجزای موتور پایگاه دستورات sql در پایگاه داده داده است. سربار تولید شده با استفاده از بهینه ساز پرس و جو برای تجزیه پرس و جو و انتخاب یک طرح.

تا حد زیادی با کارایی طرح اجرایی انتخاب شده جبران می شود. به عنوان مثال، فرض کنید یک پروژه ساخت خانه به دو شرکت ساختمانی مختلف واگذار شده است. اگر یک شرکت چند روزی را صرف برنامه ریزی ساخت خانه کند و شرکت دیگر بلافاصله بدون برنامه ریزی شروع به ساخت و ساز کند، به احتمال بسیار زیاد شرکتی که پروژه را برنامه ریزی کرده است ابتدا ساخت و ساز را به پایان برساند.SQL Server Query Optimizer یک بهینه ساز مبتنی بر هزینه است.

هر طرح اجرایی ممکن از نظر میزان استفاده از منابع کامپیوتری دارای هزینه است. بهینه ساز پرس و جو طرح دستورات sql در پایگاه داده های ممکن را تجزیه و تحلیل می کند و طرحی را با کمترین هزینه تخمینی انتخاب می کند. برای برخی از دستورات پیچیده SELECT، هزاران طرح اجرایی ممکن وجود دارد. در این موارد، Query Optimizer همه ترکیب‌های ممکن را تجزیه و تحلیل نمی‌کند، اما از الگوریتم‌های پیچیده برای شناسایی سریع یک برنامه اجرایی که هزینه آن تا حد امکان به حداقل هزینه نظری نزدیک است، استفاده می‌کند.

پیشنهاد می کنیم به مشاهده مقاله trigger در sql بپردازید.

SQL Server Query Optimizer نه تنها برنامه اجرا را با کمترین هزینه از نظر منابع انتخاب می کند، بلکه طرحی را شناسایی می کند که نتایج را با هزینه معقول از نظر منابع به سرعت به کاربر برمی گرداند. به عنوان مثال، اجرای پرس و جوی موازی معمولاً از منابع بیشتری نسبت به اجرای سریال استفاده می کند، اما به شما امکان می دهد پرس و جو را سریعتر تکمیل کنید. SQL Server Query Optimizer از یک طرح اجرای موازی برای برگرداندن نتایج استفاده می کند، تا دستورات sql در پایگاه داده زمانی که این طرح بار روی سرور را افزایش ندهد.

SQL Server Query Optimizer برای برآورد هزینه های منابع روش های مختلف استخراج اطلاعات از یک جدول یا فهرست، بر آمار توزیع تکیه می کند. آمار توزیع برای ستون ها و نمایه ها ثبت می شود و حاوی اطلاعاتی در مورد چگالی 1 داده های اساسی است. این اطلاعات برای نشان دادن انتخابی بودن مقادیر در یک شاخص یا ستون استفاده می شود. به عنوان مثال، در جدولی که خودروها را نشان می دهد، خودروهای زیادی توسط یک سازنده تولید می شوند، اما به هر کدام یک شماره شناسایی اختصاص داده شده است.

یک شاخص بر اساس شماره شناسایی خودرو نسبت به شاخص مبتنی بر سازنده انتخابی تر است، زیرا شماره شناسایی خودرو دارای تراکم کمتری نسبت دستورات sql در پایگاه داده به سازنده است. اگر آمار شاخص به روز نباشد، بهینه ساز پرس و جو ممکن است بهترین راه حل را برای وضعیت فعلی جدول انتخاب نکند. برای اطلاعات بیشتر در مورد چگالی، به آمار مراجعه کنید.1 تراکم توزیع مقادیر منحصربه‌فرد موجود در داده‌ها یا میانگین تعداد مقادیر تکراری را برای یک ستون مشخص تعریف می‌کند. با کاهش چگالی، گزینش پذیری یک مقدار افزایش می یابد.

SQL Server Query Optimizer یک مؤلفه مهم است زیرا به سرور پایگاه دستورات sql در پایگاه داده داده اجازه می دهد تا بدون نیاز به مداخله برنامه نویس یا مدیر پایگاه داده به صورت پویا با شرایط متغیر پایگاه داده سازگار شود. به این ترتیب برنامه نویسان می توانند روی توصیف نتیجه نهایی پرس و جو تمرکز کنند. با هر اجرای عبارت، بهینه ساز پرس و جوی SQL Server یک برنامه اجرایی موثر برای وضعیت فعلی پایگاه داده جمع آوری می کند.توجه داشته باشید

SQL Server Management Studio سه گزینه برای مشاهده برنامه های اجرایی دارد:برنامه اجرای تخمینی، که طرح کامپایل شده تولید شده توسط بهینه ساز پرس و جو است.طرح اجرای واقعی، که طرح تدوین شده به اضافه زمینه اجراست. این شامل اطلاعات زمان اجرا در دسترس پس از اجرا است، مانند هشدارهای اجرا یا در نسخه های جدیدتر موتور پایگاه داده، زمان سپری شده و CPU استفاده شده در طول اجرا.آمار پرس و جو پویا، یعنی طرح دستورات sql در پایگاه داده کامپایل شده به اضافه زمینه اجرا.

آنها شامل اطلاعات زمان اجرا با پیشرفت اجرا هستند و هر ثانیه به روز می شوند. اطلاعات زمان اجرا شامل تعداد واقعی خطوطی است که از اپراتورها عبور می کنند.پردازش یک عبارت SELECTدر اینجا روش اصلی مورد نیاز برای پردازش یک دستور SELECT در SQL Server است:تجزیه کننده عبارت SELECT را تجزیه می کند و آن را به واحدهای منطقی مانند کلمات کلیدی، عبارات، عملگرها و شناسه ها تقسیم می کند.یک درخت پرس و جو، که گاهی اوقات دنباله منطقی نامیده می شود.

ساخته می شود که مراحل منطقی مورد نیاز برای تبدیل داده منبع به فرمت مورد نیاز برای مجموعه نتایج را شرح می دهد.Query Optimizer راه های مختلف دسترسی به جداول منبع را تجزیه و تحلیل می کند و مجموعه ای از مراحل را انتخاب می کند که نتایج را سریعتر و با استفاده کمتر از منابع برمی گرداند. درخت پرس و جو برای ثبت مجموعه دستورات sql در پایگاه داده دقیق مراحل به روز می شود. نسخه نهایی بهینه شده درخت پرس و جو، طرح اجرا نامیده می شود.

موتور رابطه ای شروع به اجرای طرح اجرا می کند. همانطور که مراحلی که به داده‌های جدول پایه نیاز دارند پردازش می‌شوند، موتور رابطه‌ای از موتور ذخیره‌سازی می‌خواهد تا داده‌های مجموعه ردیف مورد نیاز خود موتور رابطه‌ای را ارسال کند.موتور رابطه ای داده های برگشتی توسط موتور ذخیره سازی را دستورات sql در پایگاه داده در قالب تعریف شده برای مجموعه نتایج پردازش می کند و مجموعه نتایج را به مشتری برمی گرداند.ارزیابی عبارات و پردازش ثابت هادر SQL Server، برخی از عبارات ثابت در مرحله مقدماتی برای بهبود عملکرد پرس و جو ارزیابی می شوند.

آموزش دستورات sql در پایگاه داده

این رفتار پردازش ثابت در زمان کامپایل نامیده می شود. یک ثابت یک Transact-SQL است،عباراتی که ثابت ها را می توان در زمان کامپایل پردازش کردSQL Server از پردازش ثابت زمان کامپایل برای انواع عبارات زیر استفاده می کند:عبارات حسابی که فقط شامل ثابت هستند، مانند 1 + 1 یا 5/3 * 2.عبارات منطقی که فقط شامل ثابت هستند، به عنوان مثال 1 = 1 و 1> 2 و 3> 4.توابع از دستورات sql در پایگاه داده پیش تعریف شده ای که SQL Server آنها را برای پردازش ثابت مناسب می داند، مانند CAST و CONVERT.

به طور کلی، اگر تابعی فقط تابعی از ورودی های آن باشد و نه سایر اطلاعات متنی، مانند گزینه های SET، تنظیمات زبان، گزینه های پایگاه داده و کلیدهای رمزنگاری، می تواند پردازش زمان کامپایل ثابت ها را انجام دهد. برای توابع غیر قطعی امکان انجام پردازش زمان کامپایل ثابت ها وجود دستورات sql در پایگاه داده ندارد. برای توابع قطعی از پیش تعریف شده، به استثنای برخی موارد، می توانید پردازش زمان کامپایل ثابت ها را انجام دهید.روش های قطعی انواع CLR تعریف شده توسط کاربر و توابع CLR تعریف شده توسط کاربر با مقادیر اسکالر قطعی (شروع با SQL Server 2012 (11.x)).

برای اطلاعات بیشتر، Compile-Time Constant Processing for CLR User Defined Methods and Functions را ببینید.توجه داشته باشیدیک استثنا برای انواع LOB اعمال می شود. اگر نوع خروجی پردازش ثابت از دستورات sql در پایگاه داده نوع LOB باشد، یعنی متن، ntext، تصویر، nvarchar (max)، varchar (max)، varbinary (max)، یا XML، SQL Server پردازش ثابتی را برای عبارت انجام نمی دهد.عباراتی که پردازش ثابت برای آنها در زمان کامپایل قابل انجام نیست.

برای همه انواع دیگر عبارات، ثابت ها را نمی توان در زمان کامپایل پردازش کرد. به طور خاص، پردازش ثابت زمان کامپایل برای انواع عبارات زیر قابل انجام نیست:عبارات غیر ثابت، مانند عبارتی که نتیجه آن به مقدار یک ستون بستگی دارد.عباراتی که نتیجه آنها به یک متغیر یا پارامتر محلی مانند @x بستگی دارد.توابع غیر قطعی دستورات sql در پایگاه داده توابع Transact-SQL تعریف شده توسط کاربر 1.عباراتی که نتیجه آنها به تنظیمات زبان بستگی دارد.عباراتی که نتیجه آنها به گزینه های SET بستگی دارد.

عباراتی که نتیجه آنها به گزینه های پیکربندی سرور بستگی دارد.1 قبل از SQL Server 2012 (11.x)، توابع و روش های تعریف شده توسط کاربر CLR با مقادیر اسکالر قطعی انواع تعریف شده توسط کاربر CLR از پردازش زمان کامپایل پشتیبانی نمی کردند.نمونه‌هایی دستورات sql در پایگاه داده از عباراتی که ثابت‌های زمان کامپایل را می‌توان پردازش کرد و عباراتی که پردازش زمان کامپایل برای آنها امکان‌پذیر نیست.پرس و جوی زیر را در نظر بگیرید:اگر گزینه پایگاه داده PARAMETERIZATION برای پرس و جو روی FORCED تنظیم نشده باشد.

عبارت 117.00 + 1000.00 ارزیابی شده و با نتیجه 1117.00، قبل از کامپایل شدن کوئری جایگزین می شود. از مزایای کامپایل کردن ثابت ها در زمان کامپایل می توان به موارد زیر اشاره کرد:عبارت نباید چندین بار در زمان اجرا ارزیابی شود.مقدار عبارت پس از ارزیابی توسط بهینه ساز پرس و جو برای تخمین اندازه مجموعه نتایج قسمت TotalDue> 117.00 + 1000.00 از دستورات sql در پایگاه داده پرس و جو استفاده می شود.اگر dbo.f یک تابع اسکالر تعریف شده توسط کاربر است.

برای عبارت dbo.f (100) هیچ پردازش زمان کامپایل ثابت ها وجود ندارد، زیرا این در SQL Server برای عباراتی که شامل توابع تعریف شده توسط کاربر هستند امکان پذیر نیست، حتی اگر آنها قطعی هستند. برای اطلاعات بیشتر در مورد پارامترسازی، در ادامه این مقاله به پارامترسازی اجباری مراجعه کنید.ارزیابی دستورات sql در پایگاه داده عبارات برخی از عباراتی که پردازش ثابت برای آنها انجام نمی شود اما آرگومان های آنها در زمان کامپایل شناخته شده است، خواه پارامتر باشند یا ثابت، با استفاده از برآوردگر اندازه مجموعه نتایج (کاردینالیته) موجود در بهینه ساز پرس و جو در طول بهینه سازی ارزیابی می شوند.

به ویژه، اگر همه ورودی ها شناخته شده باشند، عملگرهای ویژه و توابع از پیش تعریف شده زیر در زمان کامپایل ارزیابی می شوند: UPPER، LOWER، RTRIM، DATEPART (فقط YY)، GETDATE، CAST، و CONVERT. اپراتورهای زیر نیز در زمان دستورات sql در پایگاه داده کامپایل ارزیابی می شوند که همه ورودی های آنها شناخته شده باشد:عملگرهای حسابی +، -، *، /، – unaryعملگرهای منطقی AND، OR و NOTعملگرهای مقایسه <,>, <=,> =, <>, LIKE, IS NULL و IS NOT NULLسایر عملگرها یا توابع توسط بهینه ساز پرس و جو هنگام تخمین کاردینالیته ارزیابی نمی شوند.

نمونه هایی از ارزیابی عبارات در زمان کامپایلروش ذخیره شده زیر را در نظر بگیرید:هنگام بهینه‌سازی عبارت SELECT در رویه، بهینه‌ساز پرس و جو سعی می‌کند کاردینالیته مورد انتظار مجموعه نتایج را برای شرط OrderDate> @d + 1 ارزیابی کند. برای عبارت @d + 1 هیچ پردازش ثابت در زمان کامپایل وجود ندارد، زیرا @d یک پارامتر است. با این حال، در طول بهینه سازی، مقدار دستورات sql در پایگاه داده پارامتر مشخص است. بنابراین، بهینه‌ساز پرس و جو می‌تواند اندازه مجموعه نتایج را به طور دقیق تخمین بزند و این به شما امکان می‌دهد یک طرح پرس و جو مناسب را انتخاب کنید.

سپس مثالی مشابه نمونه قبلی در نظر بگیرید، با این تفاوت که یک متغیر محلی @ d2 جایگزین دستورات sql در پایگاه داده d + 1 @ در پرس و جو می شود و این عبارت به جای پرس و جو در یک عبارت SET ارزیابی می شود.وقتی دستور SELECT در MyProc2 در SQL Server بهینه شده است، مقدار [email protected] مشخص نیست. در نتیجه، Query Optimizer از یک تخمین پیش‌فرض برای انتخاب OrderDate> @ d2 استفاده می‌کند که در این مورد 30 درصد است.

پردازش سایر دستورالعمل هاروال اصلی توصیف شده برای پردازش یک دستور SELECT برای سایر دستورات Transact-SQL مانند INSERT، UPDATE و DELETE نیز اعمال می شود. هر دو عبارت UPDATE و DELETE باید مجموعه ردیفی را که دستورات sql در پایگاه داده باید اصلاح یا حذف شود را تعریف کنند. با استفاده از فرآیند شناسایی ردیف مربوط به آن چیزی که ردیف های مبدأ را که مجموعه نتیجه یک عبارت SELECT را تشکیل می دهند، شناسایی می کند.

دستورات UPDATE و INSERT هر دو می توانند حاوی عبارات SELECT داخلی باشند که مقادیر داده را برای به روز رسانی یا درج ارائه می دهند.عبارات دستورات sql در پایگاه داده زبان تعریف داده (DDL)، مانند CREATE PROCEDURE یا ALTER TABLE، همچنین به مجموعه ای از عملیات رابطه ای انجام شده بر روی جداول فهرست سیستم و در برخی موارد، مانند ALTER TABLE ADD COLUMN، بر روی جداول داده حل می شود.میزهای کار موتور رابطه ای ممکن است.

نیاز به پر کردن یک جدول کاری برای انجام یک عملیات منطقی مشخص شده در یک دستور Transact-SQL داشته باشد. جداول کار جداول داخلی هستند که برای درج نتایج میانی استفاده می شوند. جداول کاری برای برخی از جستارهای GROUP BY، ORDER BY یا UNION ایجاد می شود. به عنوان مثال، اگر دستورات sql در پایگاه داده یک بند ORDER BY به ستون‌هایی اشاره می‌کند که توسط شاخص‌ها پوشش داده نمی‌شوند، ممکن است لازم باشد یک جدول کاری ایجاد شود تا مجموعه نتایج را به ترتیب مورد نیاز مرتب کند.

میزهای کاری گاهی اوقات به عنوان قرقره برای نگهداری موقت نتیجه اجرای طرح پرس و جو نیز استفاده می شوند. جداول کار در tempdb کامپایل می شوند و زمانی که دیگر مورد نیاز نباشند به طور خودکار حذف می شوند.مشاهده دستورات sql در پایگاه داده وضوح در SQL Server Query Processor، نماهای نمایه شده و غیر نمایه شده به روش های مختلفی مدیریت می شوند:ردیف های نمای نمایه شده در پایگاه داده با همان فرمت جدول ذخیره می شوند.

اگر بهینه ساز پرس و جو تصمیم بگیرد که از نمای نمایه شده در طرح پرس و جو استفاده کند، نمای نمایه شده به عنوان جدول پایه در نظر گرفته می شود.فقط تعریف نمای نمایه شده ذخیره می شود، نه ردیف های نما. بهینه ساز پرس و جو منطق تعریف view را در طرح اجرایی کامپایل شده برای دستور Transact-SQL که به نمای غیر نمایه شده ارجاع می دهد تعبیه دستورات sql در پایگاه داده می کند.منطقی که توسط بهینه‌ساز پرس و جوی SQL Server برای تصمیم‌گیری زمان استفاده از نمای نمایه‌سازی شده استفاده می‌شود.

مشابه منطقی است که برای تصمیم‌گیری زمان استفاده از فهرست برای جدول استفاده می‌شود. اگر داده‌های نمای نمایه‌سازی‌شده تمام یا بخشی از عبارت Transact-SQL را پوشش دهد و Query Optimizer فهرستی از view را به‌عنوان ارزان‌ترین مسیر دسترسی شناسایی کند، این نمایه صرف نظر از اینکه نمای مورد نظر دستورات sql در پایگاه داده در پرس و جو ارجاع داده شده باشد یا خیر، انتخاب می‌شود.اگر یک دستور Transact-SQL به یک نمای غیر نمایه شده ارجاع دهد.

تجزیه کننده و بهینه ساز پرس و جو منابع عبارت Transact-SQL و view را تجزیه می کنند و سپس آنها را در یک طرح اجرایی حل می کنند. طرح اجرا برای دستور Transact-SQL و برای view یکسان است.برای مثال، دیدگاه زیر را در دستورات sql در پایگاه داده نظر بگیرید:بر اساس این دیدگاه، دو دستور Transact-SQL زیر عملیات مشابهی را روی جداول پایه انجام می‌دهند و نتایج یکسانی را تولید می‌کنند:

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.