Indexed View چیست؟

Indexed View چیست؟

آموزش Views در sql (بخش پایانی)

با سلام. در این بخش از آموزش views در اسکویل ما به آموزش Indexed View می پردازیم.

  • Indexed View چیست؟

  •  Indexed View چه کاربردی دارد؟

  •  تفاوت آن با View چیست؟

SQL Server views، میتواند برخی از مزایا مانند سادگی کوئری، ثبات منطق کسب و کار و امنیت را ارائه می دهد. با این حال، عملکرد کوئری را بهبود نمی بخشند. (سرعت کمی دارد)

Indexed View بر خلاف SQL Server views می تواند اطلاعات را مانند یک جدول ذخیره می کنند.

indexed views چیست

 

آموزش ایجاد Views در sql (بخش پایانی)

با سلام. در این بخش از آموزش views در اسکویل ما به آموزش Indexed View می پردازیم.

Indexed View چیست؟ | چه کاربردی دارد؟ | تفاوت آن با View چیست؟

SQL Server views، میتواند برخی از مزایا مانند سادگی کوئری، ثبات منطق کسب و کار و امنیت را ارائه می دهد. با این حال، عملکرد کوئری را بهبود نمی بخشند. (سرعت کمی دارد)

Indexed View بر خلاف SQL Server views می تواند اطلاعات را مانند یک جدول ذخیره می کنند.
Indexed View نتیجه را بصورت فیزیکی ذخیره می کند و نیاز به انجام عملیات Expand ندارد. به این معنی که اطلاعات در خود View قرار دارد و لازم نیست که اطلاعات را از جداول واکشی کند. بنابراین سرعت بازیابی و واکشی اطلاعات بالا میرود.

حال در این قسمت از آموزش فارسی Indexed View ما به شما یاد خواهیم داد که چگونه یک Indexed View را بسازید.


ایجاد یک Indexed View

 

  • در ابتدا با استفاده از WITH SCHEMABINDING یک View می سازید.
  • سپس یک clustered index یونیک ایجاد می کنید.


با استفاده از گزینه WITH SCHEMABINDING، اگر می خواهید ساختار جداول را تغییر دهید که بر تعریف Indexed View تاثیر می گذارد، قبل از اعمال تغییرات ابتدا باید از drop the indexed view استفاده کنید.
وقتی داده های جداول پایه تغییر می کنند، داده ها در indexed view نیز به طور خودکار به روز می شوند. این باعث سربار نوشتن برای جداول ارجاع شده می شود. به این معنی است که وقتی شما در جدول پایه ای بنویسید، SQL Server نیز باید آنرا در  Indexed View بنویسد. بنابراین، شما فقط باید یک Indexed View در برابر جداول ایجاد کنید که دارای به روزرسانی های مکرر داده است. 

یک مثال برای ایجاد Indexed View


ما از جدولهای production.products، production.brands، production.categories استفاده می کنیم. (این جدولها در بخش دوم آموزش ایجاد views در sql توضیح داده شده است)

indexed views در sql



CREATE VIEW product_master
WITH SCHEMABINDING
AS 
SELECT
    product_id,
    product_name,
    model_year,
    list_price,
    brand_name,
    category_name
FROM
    production.products p
INNER JOIN production.brands b 
    ON b.brand_id = p.brand_id
INNER JOIN production.categories c 
    ON c.category_id = p.category_id;


در کد بالا بعد از نام جدول از WITH SCHEMABINDING استفاده می کنیم.


سپس یک unique clustered index ایجاد کنید:



CREATE UNIQUE CLUSTERED INDEX 
    ucidx_product_id 
ON production.product_master(product_id);


کد بالا View  را به صورت فیزیکی در دیتابیس ایجاد می کند.


همچنین می توانیم یک non-clustered index در ستون product_name اضافه کنیم:


CREATE NONCLUSTERED INDEX 
    ucidx_product_name
ON production.product_master(product_name);


حال اگر کوئری ها را در مقابل View   مقایسه کنید متوجه تغییرات خواهید شد.


Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'product_master'. Scan count 1, logical reads 6, physical reads 1, read-ahead reads 11, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.




حال به جای اینکه داده ها را از 3 جدول خوانده شود، اسکیول سرور آنها را مستقیما از product_master میخواند.
توجه داشته باشید که این ویژگی فقط در SQL Server Enterprise Edition موجود است. اگر از SQL Server Standard یا Developer Edition استفاده می کنید، شما باید برای اشاره به جدول از WITH (NOEXPAND) استفاده کنید. مانند زیر:

SELECT 
    * 
FROM
    production.product_master WITH (NOEXPAND)
ORDER BY
    product_name;


بنابراین در این آموزش شما یاد گرفتید که Indexed View چیست و دانستید که باعث بالا رفتن عملکرد و بهبود داده ها می شود. ممنون که تا پایان این دوره آموزشی SQL Server views همراه با ما در مجموعه ABLY بودید. امیدواریم که این آموزش و دیگر آموزش ها برای شما عزیزان مفید واقع گردیده باشد. در صورت داشتن هرگونه نظر، انتقاد و پیشنهاد لطفا آن را با ما در میان بگذارید. " با تشکر – مجموعه ABLY "
 

منبع: sqlservertutorial

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس