You are on page 1of 5

(https://www.veritabani.gen.

tr/)

INDEXED VİEW NEDİR VE NASIL


OLUŞTURULUR
 (https://www.veritabani.gen.tr) MS SQL (https://www.veritabani.gen.tr/category/microsoft-sql/)
 Indexed View Nedir Ve Nasıl Oluşturulur

(https://www.veritabani.gen.tr/2017/04/25/indexed-view-nedir-nasil-olusturulur/)
MS SQL (https://www.veritabani.gen.tr/category/microsoft-sql/) , PERFORMANS (https://www.veritabani.gen.tr/category/microsoft-sql/performans/) ,

VERİTABANI YÖNETİMİ (https://www.veritabani.gen.tr/category/microsoft-sql/veritabani-yonetimi/)


25 Nis by NURULLAH ÇAKIR (https://www.veritabani.gen.tr/author/nuru/)

Indexed View Nedir Ve Nasıl Oluşturulur


(https://www.veritabani.gen.tr/2017/04/25/indexed-view-nedir-nasil-
olusturulur/)
V ew’lere ndex ekleyerek Indexed V ew’ler elde eder z. V ew kavramı hakkında detaylı b lg almak ç n “V ew Ned r Ve Nasıl Oluşturulur
(http://www.ver taban .gen.tr/2017/04/25/v ew-ned r-nas l-olusturulur/)” s ml makalem okumanızı tavs ye eder m.

V ew’ler normalde ver n n kend s n tutmazlar. V ew’ler ndexed v ew hale get rd ğ m zde artık ver n n kend s n tutmaya başlarlar. Bu yüzden v ew
performansı artarken v ew’ n select ett ğ tabloların nsert,update ve delete performansları azalır. Ayrıca ndexed v ew’ler ver tabanınızda ekstra
alan kaplamaya başlar. V ew’ler ndexed v ew hale get rmek ç n bazı şartlar vardır. Bu şartları aşağıda maddelere hal nde sıralayalım.

1) Schemab nd ng yapıya geç rmek ya da oluştururken schemab nd ng yapıda oluşturmak gerek r. Schemab nd ng’ n mantığı v ew’ n select ett ğ
tablolarda b r mod f kasyon değ ş kl ğ yapılamaz olması. Schemab nd ng yapıda v ew’ oluşturduktan sonra v ew’ n select ett ğ tablolardak
kolonlarda aşağıdak g b b r mod f kasyon yapılmak stend ğ nde aşağıdak g b b r hata alırsınız.

1 ALTER TABLE dbo.IdentitiyOrnekTablo

2 ALTER COLUMN ID bigint;

Msg 5074, Level 16, State 1, L ne 6

The object ‘IndexedV ewOrnek’ s dependent on column ‘ID’.

Msg 4922, Level 16, State 9, L ne 6

ALTER TABLE ALTER COLUMN ID fa led because one or more objects access th s column.
 

V ew’ schemab nd ng yapıda yen oluştururken aşağıdak g b oluşturmamız gerek r.

1 CREATE VIEW [dbo].[IndexedViewOrnek] 

2 WITH SCHEMABINDING 

3 AS

4 SELECT ID,AdSoyad FROM [dbo].[IdentitiyOrnekTablo]

Schemab nd ng le oluşturulmamış b r v ew’ schemab nd ng yapıya aşağıdak scr pt le çev reb l r z.

1 ALTER VIEW [dbo].[IndexedViewOrnek] 

2 WITH SCHEMABINDING

3 AS

4 SELECT ID,AdSoyad FROM [dbo].[IdentitiyOrnekTablo]

2) V ew’ oluşturacak Select fades nde * FROM yer ne kolonları tek tek yazmalısınız. Yoksa aşağıdak g b hata alırsınız.

Msg 1054, Level 15, State 6, Procedure IndexedV ewOrnek, L ne 4

Syntax ‘*’ s not allowed n schema-bound objects.

3) V ew’ schemab nd ng yapıda oluşturduktan sonra lk olarak un que clustered ndex eklemen z gerek r. Un que clustered ndex ekled kten sonra
d ğer kolonlara da ndex koyab l rs n z. Aşağıdak scr pt le un que clustered ndex koyma şlem n gerçekleşt reb l rs n z.

1 CREATE UNIQUE CLUSTERED INDEX UIX_IndexedViewOrnek

2     ON dbo.IndexedViewOrnek(ID);  

3 GO 

B z örneğ m zde ID kolonu üzer nde un que clustered ndex koymayı terc h ett k. S zde bu seç m yaparken seçeceğ n z kolonun v ew’ n select
ett ğ tabloda da un que olduğundan em n olun. Yoksa aşağıdak g b hata alırsınız.

Msg 1505, Level 16, State 1, L ne 1

The CREATE UNIQUE INDEX statement term nated because a dupl cate key was found for the object name ‘IndexedV ewOrnek’ and the ndex
name ‘UIX_IndexedV ewOrnek’. The dupl cate key value s (182861, C740D0288EA7C45FE0407C0A04162BDD, 12685525396).

The statement has been term nated.

4) V ew’ oluştururken select sorgunuzda aşağıdak tabloda bel rt len fadeler kullanamazsınız.

 
ROWSET funct on’ları (OPENDATASOURCE, OPENQUERY, OUTER jo n çeş tler (LEFT, RIGHT,
COUNT
OPENROWSET, AND OPENXML) veya FULL)

Der ved table Self-jo ns *

DISTINCT STDEV, STDEVP, VAR, VARP, or AVG Common table express on (CTE)

float*, text, ntext, mage, XML, veya


Subquery OVER
f lestream kolonları

Full-text pred cates (CONTAIN,


SUM funct on that references a nullable express on ORDER BY
FREETEXT)

CUBE, ROLLUP, veya GROUPING


CLR user-def ned aggregate funct on TOP
SETS operatörler

MIN, MAX UNION, EXCEPT, or INTERSECT operators TABLESAMPLE

Table var ables OUTER APPLY or CROSS APPLY PIVOT, UNPIVOT

Sparse kolon Inl ne veya mult -statement table-valued funct ons OFFSET

Örnek olarak UNION, INTERSECT veya EXCEPT kullanırsanız v ew üzer nde b r öncek maddede bahsett ğ m z un que clustered ndex’
oluştururken aşağıdak g b hata alırsınız.

Msg 10116, Level 16, State 1, L ne 1

Cannot create ndex on v ew ‘dbo.IndexedV ewOrnek’ because t conta ns one or more UNION, INTERSECT, or EXCEPT operators. Cons der
creat ng a separate ndexed v ew for each query that s an nput to the UNION, INTERSECT, or EXCEPT operators of the or g nal v ew.

Yada Common Table Express on kullanırsanız ndex oluştururken aşağıdak g b hata alırsınız.

Msg 10137, Level 16, State 1, L ne 1

Cannot create ndex on v ew “dbo.IndexedV ewOrnek” because t references common table express on “TBL_CTE”. V ews referenc ng common
table express ons cannot be ndexed. Cons der not ndex ng the v ew, or remov ng the common table express on from the v ew def n t on.

5) V ew’ler n tablo le aynı sonuç kümes n döndürmes ç n SET seçenekler ne d kkat etmen z gerek r. Çünkü farklı SET seçenekler farklı
sonuçlar doğurab l r. Örneğ n SET CONCAT_NULL_YIELDS_NULL ON fades v ew’ n başında olursa select fades nde ‘x’+null ded ğ n zde sonuç
null gelecekt r. SET CONCAT_NULL_YIELDS_NULL OFF fades v ew’ n başında olursa bu değer bu sefer x olarak dönecekt r.
Olması gereken SET seçenekler n aşağıdak tabloda göreb l rs n z. Aslında default olarak server’dak le aynı fakat
OLE DB ya da ODBC connect on kullanıyorsanız bazı değ ş kl kler yapmanız gerek yor. Aşağıdak tabloda olması gereken
değerler ve default değerler göreb l rs n z.

SET opt ons Olması Gereken Default Default Default


Değer Değer
OLE DB ve ODBC DB-L brary
Değer Değer

ANSI_NULLS ON ON ON OFF

ANSI_PADDING ON ON ON OFF

ANSI_WARNINGS* ON ON ON OFF

ARITHABORT ON ON OFF OFF

CONCAT_NULL_YIELDS_NULL ON ON ON OFF

NUMERIC_ROUNDABORT OFF OFF OFF OFF

QUOTED_IDENTIFIER ON ON ON OFF
 

6) V ew’ oluşturan select sorgusunda tabloları select ederken tablo sm n şema sm le b rl kte schema.tablename şekl nde
yazmalısınız. Bu şek lde yazmazsanız aşağıdak g b hata alırsınız.

Msg 4512, Level 16, State 3, Procedure IndexedV ewOrnek, L ne 4

Cannot schema b nd v ew ‘dbo.IndexedV ewOrnek’ because name ‘Ident t yOrnekTablo’ s nval d for schema b nd ng. Names
must be n two-part format and an object cannot reference tself.

7) Eğer v ew çers nde user def ned funct ons kullanıyorsanız bu fonks yonu da şema sm le b rl kte schema.funct on şekl nde
kullanmalısınız.

8) Eğer sorguda GROUP BY kullanırsanız select fades nde COUNT_BIG(*) fades n de kullanmalı, HAVING
kullanmamalısınız. Örnek olarak;

 
1 CREATE VIEW [dbo].[IndexedViewOrnek] 

2 WITH SCHEMABINDING 

3 AS

4 SELECT SUM(ID) ToplamID,AdSoyad,COUNT_BIG(*) sayı FROM [dbo].[IdentitiyOrnekTablo]

5 GROUP BY AdSoyad

Eğer ndexed v ew oluştururken Group By kullandığınızda COUNT_BIG(*) kullanmazsanız un que clustered ndex
oluşturamazsanız. Aşağıdak g b b r hata le karşılaşırsınız.

Msg 10138, Level 16, State 1, L ne 1

Cannot create ndex on v ew ‘Test.dbo.IndexedV ewOrnek’ because ts select l st does not nclude a proper use of
COUNT_BIG. Cons der add ng COUNT_BIG(*) to select l st.

9)Eğer v ew çers ndek select fades nde select edeceğ n z kolonları yazarken b r al as tanımlamazsanız aşağıdak g b b r hata
alırsınız.

Hatalı v ew oluşturma scr pt’ : Bu scr pt’te k hata SUM(ID) ç n b r al as tanımlanmamış olması.

Şöyle olmalıydı: SUM(ID) TOPLAMID

1 CREATE VIEW [dbo].[IndexedViewOrnek] 

2 WITH SCHEMABINDING 

3 AS

4 SELECT SUM(ID),AdSoyad FROM [dbo].[IdentitiyOrnekTablo]

5 GROUP BY AdSoyad

Hata:

Msg 4511, Level 16, State 1, Procedure IndexedV ewOrnek, L ne 14

Create V ew or Funct on fa led because no column name was spec f ed for column 1.

 601 total views, 4 views today

(https://www.veritabani.gen.tr/author/nuru/)

 By NURULLAH ÇAKIR ()

You might also like