آموزش پیشرفته SQL Server (جلسه چهارم) – Index View چیست؟

Index View چیست؟ ، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی Index View چیست؟ ، قسمت های قبلی را مطالعه فرمایید.


Index View چیست؟

به طور کلی Index View یکی از انواع View های قابل تعریف در SQL SERVER می باشد و دارای ویژگیهای زیر است:

  1. ذخیره نتیجه آن بصورت فیزیکی می باشد.
  2. نیاز به انجام عملیات Expand ندارد به این معنی که همه اطلاعات لازم در داخل View موجود است و نیازی به بررسی و محاسبه جداول شرکت کننده در آن نمی باشد.
  3. امکان اعمال Clustered و NonClustered Index روی آن.

شرایط استفاده از Index View

  1. عدم استفاده از select *.
  2. اعمال نام گذاری دو قسمتی به ازای جدول – (dbo.Employees).
  3. عدم استفاده از Outer Join در کوئری
  4. عدم استفاده از Set Operation و Cross Join
  5. کوئری دارای یک یا ترکیبی از چند فیلد به شکل Unique باشد
  6. استفاده از Schema Binding هنگام ایجاد View
  7. ایجاد اولین ایندکس بصورت Unique Clustered

پیاده سازی Index View

برای مشاهده تاثیر استفاده ار Index View ابتدا کوئری زیر را اجرا کرده و هزینه آن را مطابق با شکل بدست می آوریم:

Index View چیست؟

SELECT CUST.CustomerID ,
       SOH.SalesOrderID ,
       SOD.ProductID ,
       SUM(SOD.OrderQty)ASTotalOrderQty ,
       SUM(LineTotal)ASTotalValue
FROM   Sales.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 چیست؟

حال اگر یک Index View تعریف نماییم و query بالا را دوباره اجرا نماییم مطابق شکل تاثیر استفاده از آن را در کارایی خواهیم دید:

Index View چیست؟

CREATEVIEWSales.vSalesSummaryCustomerProduct
WITHSCHEMABINDING
AS
   SELECT CUST.CustomerID ,
           SOH.SalesOrderID ,
           SOD.ProductID ,
           SUM(SOD.OrderQty)ASTotalOrderQty ,
           SUM(LineTotal)ASTotalValue ,
            COUNT_BIG(*)ASCountLines
   FROM   Sales.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 چیست؟

SELECT CustomerID ,
       SalesOrderID ,
       TotalOrderQty ,
       TotalValue
FROM   Sales.vSalesSummaryCustomerProduct;

Index View چیست؟

در گام بعدی یک NonClustered Index روی Index View تعریف می نماییم و مجددا مطابق شکل تاثیر تغییر صورت گرفته را در کارایی مشاهده مینماییم:

Index View چیست؟

CREATENONCLUSTEREDINDEXIX_vCustomerOrders_Name
 ONSales.vCustomerOrders(Name);

Index View چیست؟


در ادامه بحث Index View چیست؟ خواهید دید...!

1-آشنایی کامل با Index View.

2-بررسی تاثیر استفاده از Index View در اجرای query با استفاده از مثال کاربردی.

3- آموزش تحلیل Execution Plan در رابطه با Index View.


دسترسی به موارد آموزشی بالا در بسته خریداری شده

  • شماره جلسه: 4
  • نام فایل ویدئو: 04
  • فرمت فایل: mp4.

نقطه شروع بحث بالا (Index View چیست؟) در ویدئو: 19:20


برای خرید و دانلود کاملآموزش پیشرفته SQL Server کلیک کنید.

READ MORE