2016-08-10 44 views
0

クラスタ化インデックスを次のビューに追加するにはどうすればよいですか。SQL Server:派生テーブルを参照するため、ビューでインデックスを作成できません。

CREATE VIEW [vExcludedIds] 
WITH SCHEMABINDING 
AS 
    SELECT DISTINCT 
     TempTable.Id 
    FROM 
     (VALUES (1), (2), (3)) AS TempTable(Id) 

そして、私のインデックス作成コマンドは次のとおりです。

CREATE UNIQUE CLUSTERED INDEX IDX_V1 
ON [vExcludedIds] (Id); 

そして、私は次のエラーを取得する:

また

Cannot create index on view "Test.dbo.vExcludedIds" because it references derived table "TempTable" (defined by SELECT statement in FROM clause). Consider removing the reference to the derived table or not indexing the view.

、私はSQL Server Management Studioで、手動でインデックスを追加しようとすると、 「新しいインデックス」ウィンドウの先頭にエラーが表示されます。

​​

何かお考えですか?

+1

このビューの目的は何ですか?テーブルを作成するだけです。 –

答えて

4

制限の多くは、インデックス付きビューを作成するためにありますhttps://msdn.microsoft.com/en-AU/library/ms191432.aspx

をお読みください。

... ビュー定義のSELECTステートメントは、次のTransact-SQL要素含めることはできません。

  • DISTINCTを
  • 派生テーブル

表または表関数の作成を検討

関連する問題