آموزش پیشرفته 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 چیست؟
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 تعریف نماییم و 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;
در گام بعدی یک NonClustered Index روی Index View تعریف می نماییم و مجددا مطابق شکل تاثیر تغییر صورت گرفته را در کارایی مشاهده مینماییم:
Index View چیست؟
CREATE
NONCLUSTERED
INDEX
IX_vCustomerOrders_Name
ON
Sales.vCustomerOrders(Name);
در ادامه بحث 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