آموزش پیشرفته SQL Server (جلسه چهارم) – Index View چیست؟
Index View چیست؟ ، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی Index View چیست؟ ، قسمت های قبلی را مطالعه فرمایید.
Index View چیست؟
به طور کلی Index View یکی از انواع View های قابل تعریف در SQL SERVER می باشد و دارای ویژگیهای زیر است:
- ذخیره نتیجه آن بصورت فیزیکی می باشد.
- نیاز به انجام عملیات Expand ندارد به این معنی که همه اطلاعات لازم در داخل View موجود است و نیازی به بررسی و محاسبه جداول شرکت کننده در آن نمی باشد.
- امکان اعمال Clustered و NonClustered Index روی آن.
شرایط استفاده از Index View
- عدم استفاده از select *.
- اعمال نام گذاری دو قسمتی به ازای جدول – (dbo.Employees).
- عدم استفاده از Outer Join در کوئری
- عدم استفاده از Set Operation و Cross Join
- کوئری دارای یک یا ترکیبی از چند فیلد به شکل Unique باشد
- استفاده از Schema Binding هنگام ایجاد View
- ایجاد اولین ایندکس بصورت Unique Clustered
پیاده سازی Index View
برای مشاهده تاثیر استفاده ار Index View ابتدا کوئری زیر را اجرا کرده و هزینه آن را مطابق با شکل بدست می آوریم:
Index View چیست؟
SELECTCUST.CustomerID ,
SOH.SalesOrderID ,
SOD.ProductID ,
SUM(SOD.OrderQty)ASTotalOrderQty ,
SUM(LineTotal)ASTotalValue
FROMSales.SalesOrderHeader SOH
INNERJOINSales.SalesOrderDetail SOD
ONSOH.SalesOrderID = SOD.SalesOrderID
INNERJOINProduction.Product PRODONPROD.ProductID = SOD.ProductID
INNERJOINSales.Customer CUSTONSOH.CustomerID = CUST.CustomerID
INNERJOINPerson.Person PERONPER.BusinessEntityID = CUST.PersonID
GROUPBYCUST.CustomerID ,
SOH.SalesOrderID ,
SOD.ProductID; 
حال اگر یک Index View تعریف نماییم و query بالا را دوباره اجرا نماییم مطابق شکل تاثیر استفاده از آن را در کارایی خواهیم دید:
Index View چیست؟
CREATEVIEWSales.vSalesSummaryCustomerProduct
WITHSCHEMABINDING
AS SELECTCUST.CustomerID ,
SOH.SalesOrderID ,
SOD.ProductID ,
SUM(SOD.OrderQty)ASTotalOrderQty ,
SUM(LineTotal)ASTotalValue ,
COUNT_BIG(*)ASCountLines
FROMSales.SalesOrderHeader SOH
INNERJOINSales.SalesOrderDetail SOD
ONSOH.SalesOrderID = SOD.SalesOrderID
INNERJOIN Production.Product PROD
ONPROD.ProductID = SOD.ProductID
INNERJOINSales.Customer CUST
ONSOH.CustomerID = CUST.CustomerID
INNERJOINPerson.Person PER
ONPER.BusinessEntityID = CUST.PersonID
GROUPBYCUST.CustomerID ,
SOH.SalesOrderID ,
SOD.ProductID;
GO CREATEUNIQUECLUSTEREDINDEXCX_vSalesSummaryCustomerProduct
ONSales.vSalesSummaryCustomerProduct(CustomerID, SalesOrderID, ProductID);
GO
Index View چیست؟
SELECTCustomerID ,
SalesOrderID ,
TotalOrderQty ,
TotalValue
FROM Sales.vSalesSummaryCustomerProduct; 
در گام بعدی یک NonClustered Index روی Index View تعریف می نماییم و مجددا مطابق شکل تاثیر تغییر صورت گرفته را در کارایی مشاهده مینماییم:
Index View چیست؟
CREATENONCLUSTEREDINDEXIX_vCustomerOrders_Name
ONSales.vCustomerOrders(Name);

در ادامه بحث Index View چیست؟ خواهید دید ...!
1-آشنایی کامل با Index View.
2-بررسی تاثیر استفاده از Index View در اجرای query با استفاده از مثال کاربردی.
3- آموزش تحلیل Execution Plan در رابطه با Index View.
دسترسی به موارد آموزشی بالا در بسته خریداری شده
- شماره جلسه: 4
- نام فایل ویدئو: 04
- فرمت فایل: mp4.
نقطه شروع بحث بالا (Index View چیست؟) در ویدئو: 19:20




