Not able to create index on below schema binding view.It is created from another view (v_prod_manu_sub
).It is showing below error message:
Cannot create index on view "dbo.V_PROD_MANU" because it references derived table "X" (defined by SELECT statement in FROM clause). Consider removing the reference to the derived table or not indexing the view.
How to change this below query for index creation ?
ALTER VIEW [dbo].[V_PROD_MANU] WITH SCHEMABINDING AS
SELECT X.PRODUCT, CAST(RIGHT(TEXT_CODE,LEN(F_TEXT_CODE)-1) AS VARCHAR(30)) AS TEXT_CODE,
CAST(SUBSTRING(RIGHT(PHRASE,LEN(F_PHRASES)-1),9,LEN(F_PHRASE)-3) AS varchar(700)) AS PHRASE
FROM (
SELECT V1.PRODUCT,
(SELECT ',' + V2.TEXT_CODE FROM dbo.V_PROD_MANU_SUB V2 WHERE V1.PRODUCT = V2.PRODUCT ORDER BY V2.F_COUNTER FOR XML PATH('')) AS TEXT_CODE,
(SELECT ' |par|par ' + V3.F_PHRASE FROM dbo.V_PROD_MANU_SUB V3 WHERE V1.PRODUCT = V3.PRODUCT ORDER BY V3.F_COUNTER FOR XML PATH('')) AS PHRASE
FROM dbo.V_PROD_MANU_SUB V1 GROUP BY V1.PRODUCT)X
OUTPUT:
Product TEXT_CODE PHRASE
00-021 MANU0043,MANU0050 Inc |par Pharmaceuticals Group |par 235 East 5nd Street |par usa |par 1-800-123-000