数年で数百万行に成長するテーブルがあります。Webアプリケーションの一部として、ユーザーが特定のページにアクセスするたびに、このテーブルのサブセットのカウントをクエリする必要があります。建築の帽子をかぶった人は、パフォーマンスに懸念があると言っています。それらが正しいと仮定すると、インデックス付きビューを追加することでこの問題に対処できますか?
私が速くなりたいSQL:
SELECT COUNT(*) FROM [dbo].[Txxx] WHERE SomeName = 'ZZZZ'
また
SELECT COUNT_BIG(*) FROM [dbo].[Txxx] WHERE SomeName = 'ZZZZ'
テーブル:
CREATE TABLE [dbo].[Txxx](
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[SomeName] [nvarchar](50) NOT NULL,
[SomeGuid] [uniqueidentifier] NOT NULL
CONSTRAINT [PK_Txxx] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
意見:
CREATE view dbo.Vxxx
WITH SCHEMABINDING
AS
SELECT SomeName, COUNT_BIG(*) AS UsedCount
FROM dbo.Txxx
GROUP BY SomeName
索引:
CREATE UNIQUE CLUSTERED INDEX [IV_COUNT] ON [dbo].[Vxxx]
(
[SomeName] ASC
)