Index View چیست؟

چاپ

آموزش پیشرفته 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) AS TotalOrderQty ,
        SUM(LineTotal) AS TotalValue
FROM    Sales.SalesOrderHeader SOH
        INNER JOIN Sales.SalesOrderDetail SOD
               ON SOH.SalesOrderID = SOD.SalesOrderID
        INNER JOIN Production.Product PROD ON PROD.ProductID = SOD.ProductID
        INNER JOIN Sales.Customer CUST ON SOH.CustomerID = CUST.CustomerID
        INNER JOIN Person.Person PER ON PER.BusinessEntityID = CUST.PersonID
GROUP BY CUST.CustomerID ,
        SOH.SalesOrderID ,
        SOD.ProductID;

Index View چیست؟

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

Index View چیست؟

CREATE VIEW Sales.vSalesSummaryCustomerProduct
WITH SCHEMABINDING
AS
    SELECT  CUST.CustomerID ,
            SOH.SalesOrderID ,
            SOD.ProductID ,
            SUM(SOD.OrderQty) AS TotalOrderQty ,
            SUM(LineTotal) AS TotalValue ,
            COUNT_BIG(*) AS CountLines
    FROM    Sales.SalesOrderHeader SOH
            INNER JOIN Sales.SalesOrderDetail SOD
                   ON SOH.SalesOrderID = SOD.SalesOrderID
            INNER JOIN Production.Product PROD
                   ON PROD.ProductID = SOD.ProductID
            INNER JOIN Sales.Customer CUST
                   ON SOH.CustomerID = CUST.CustomerID
            INNER JOIN Person.Person PER
                   ON PER.BusinessEntityID = CUST.PersonID
    GROUP BY CUST.CustomerID ,
            SOH.SalesOrderID ,
            SOD.ProductID; 
GO
CREATE UNIQUE CLUSTERED INDEX CX_vSalesSummaryCustomerProduct
  ON Sales.vSalesSummaryCustomerProduct(CustomerID, SalesOrderID, ProductID); 
GO

Index View چیست؟

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

Index View چیست؟

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

Index View چیست؟

CREATE NONCLUSTERED INDEX IX_vCustomerOrders_Name
  ON Sales.vCustomerOrders(Name);

Index View چیست؟


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

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

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

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


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

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


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