Create indexed view in SQL Server 2008

VanG

New Member
\[code\]CREATE TABLE Storage( ID INT IDENTITY(1,1) PRIMARY KEY, data XML NOT NULL)GOINSERT INTO Storage(data) VALUES('<footballteams> <team manager="Benitez"> <name>Liverpool</name> <ground>Anfield</ground> </team> <team manager="Mourinho"> <name>Chelsea</name> <ground>Stamford Bridge</ground> </team> <team manager="Wenger"> <name>Arsenal</name> <ground>Highbury</ground> </team> </footballteams>'); ----------------------------------------GOCREATE VIEW FootballView WITH SCHEMABINDING AS ( SELECT TeamName = Team.TeamNode.value('(name)[1]', 'varchar(100)'), Manager = Team.TeamNode.value('(@manager)', 'varchar(100)'), Ground = Team.TeamNode.value('(ground)[1]', 'varchar(100)') FROM dbo.Storage S CROSS APPLY DATA.nodes('/footballteams') AS Teams(TeamsNode) CROSS APPLY data.nodes('/footballteams/team') AS Team(TeamNode))GOCREATE UNIQUE CLUSTERED INDEX TeamNameInd ON FootballView(TeamName)\[/code\]-\[code\]Error Message: Cannot create index on view "CF.dbo.FootballView" because it contains an APPLY. Consider not indexing the view, or removing APPLY.\[/code\]I realise that, indeed, an index can't be created for this view because CROSS APPLY is used.Can anyone suggest a workaround for this? As working with views like this which aren't indexed is too slow when it deals with higher volumes of XML data.EDIT:Is there any way I could index the XML itself?
 
Back
Top