0

archived_events次のインデックスを持つテーブルがあります。

    CREATE NONCLUSTERED INDEX [IX_archived_events_5] ON [dbo].[archived_events]
    (
        [account_id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
    GO

ALTER TABLE [dbo].[archived_events] ADD  CONSTRAINT [PK_archived_events] PRIMARY KEY CLUSTERED 
(
    [event_type] DESC,
    [id] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO

問題は、次のクエリを実行すると、[PK_archived_events]でクラスター化インデックススキャンが実行されることが実行プランに表示されることです。

SELECT *                                  
FROM   archived_events ae WITH(nolock) 
WHERE     ( 30 = ae.[account_id] ) 

非クラスター化インデックスが無視されている理由は何ですか?

また、これはSQL Azureであり、重要かどうかはわかりません。

4

1 に答える 1

0

テーブルには、インデックスに干渉する nvarchar(max) 列がありました。それらを nvarchar(n) に変換したところ、インデックスが機能するようになりました。

于 2012-11-08T13:50:19.163 に答える