AS
BEGIN
SET NOCOUNT ON


			 IF OBJECT_ID('tempdb..#sr') IS NOT NULL DROP TABLE #sr

			 SELECT OccurID, ResourceID
			 INTO #sr
			 FROM StatementReference
			 WHERE ResourceType = 187
			 GROUP BY OccurID, ResourceID

			 CREATE UNIQUE CLUSTERED INDEX IX_1 on #sr (OccurID ASC, ResourceID ASC)


			
                 IF OBJECT_ID('tempdb..#s') IS NOT NULL DROP TABLE #s
			  SELECT os.OccurID,
				   os.StartRow AS StatementStartRow,
				   os.StartCol AS StatementStartColumn,
				   os.EndRow   AS StatementEndRow,
				   os.EndCol   AS StatementEndColumn,
				   p.PathStr   AS StmtPathStr,
				   s.Description,
				   p1.ProgramID,
				   p1.ProgramName,
				   p1.ProgramTypeID,
				   p2.PathStr AS ProgramPath,
				   o.StartRow AS ProgStartRow,
				   o.StartCol AS ProgStartCol,
				   o.EndRow AS ProgEndRow,
				   o.EndCol AS ProgEndCol,
				   p1.Ancestor,
				   p3.ProgramID AS AncestorID,
				   p3.ProgramTypeID AS AncestorTypeID
			 INTO #s
			 FROM dbo.OccurrencesStmt os
				 INNER JOIN dbo.Paths p ON os.PathID = p.PathID
				 INNER JOIN Statements s ON os.StatementType = s.StatementType
				 INNER JOIN (SELECT tp.ProgramID, ProgramTypeID, AliasName as ProgramName, Ancestor, OccurId FROM dbo.Programs tp INNER JOIN dbo.ProgramAliases tpa ON tp.ProgramID = tpa.ProgramID AND tpa.AliasType = 0) p1 ON p1.ProgramID = os.ProgID
				 INNER JOIN dbo.Occurrences o ON o.OccurID = p1.OccurID
				 INNER JOIN dbo.Paths p2 ON o.PathID = p2.PathID
				 LEFT OUTER JOIN (SELECT DISTINCT tp.ProgramID, ProgramTypeID, AliasName as ProgramName FROM dbo.Programs tp INNER JOIN dbo.ProgramAliases tpa ON tp.ProgramID = tpa.ProgramID) p3 ON p3.ProgramName = p1.Ancestor
			  WHERE EXISTS
					   (
						  SELECT 1
						  FROM #sr sr
						  WHERE os.OccurID = sr.OccurID
					   )
               CREATE CLUSTERED INDEX IX_2 on #s (OccurID)




                   IF OBJECT_ID('tempdb..#t') IS NOT NULL DROP TABLE #t
			    SELECT f.SqlFieldID,
					  f.FieldName,
					  t.SqlTableID,
					  t.TableName,
					  p.PathStr,
					  o.StartRow,
					  o.StartCol,
					  o.EndRow,
					  o.EndCol
				INTO #t
				FROM dbo.SqlFields f
					INNER JOIN dbo.SqlTables t ON f.SqlTableID = t.SqlTableID
											AND t.szDataBase = '1'
					INNER JOIN dbo.Occurrences o ON o.OccurID = t.OccurID
					INNER JOIN dbo.Paths p ON o.PathID = p.PathID
		
		          CREATE CLUSTERED INDEX IX_3 on #t (SqlFieldID)


IF OBJECT_ID('dbo.cacheEZViewer_Usage_SQLTableFields') IS NOT NULL  DROP TABLE dbo.cacheEZViewer_Usage_SQLTableFields
SELECT DISTINCT
				   t.SqlTableID,
				   t.TableName,
				   t.SqlFieldID,
				   t.FieldName,
				   s.Description,
				   s.StatementStartRow,
				   s.StatementStartColumn,
				   s.StatementEndRow,
				   s.StatementEndColumn,
				   s.StmtPathStr,
				   s.ProgramName,
				   s.ProgramID,
				   s.ProgramTypeID,
				   s.ProgramPath,
				   s.ProgStartRow,
				   s.ProgStartCol,
				   s.ProgEndRow,
				   s.ProgEndCol,
				   s.Ancestor,
				   s.AncestorID,
				   s.AncestorTypeID,
				   t.PathStr AS TablePath,
				   t.StartRow AS DeclareStmtStartRow,
				   t.StartCol AS DeclareStmtStartCol,
				   t.EndRow AS DeclareStmtEndRow,
				   t.EndCol AS DeclareStmtEndCol
               INTO dbo.cacheEZViewer_Usage_SQLTableFields
			FROM #sr sr
			     INNER JOIN #s s ON sr.OccurID = s.OccurID
				INNER JOIN #t t ON sr.ResourceID = t.SqlFieldID


END