저는 SQLServer를 처음 접했을뿐만 아니라 실제로 저를 괴롭히는 한 가지가 있습니다. 여러분 중 한 사람이 무슨 일이 일어 났는지 설명해 주길 바래요. 심지어 낯선 사람 - - 내가 인덱싱 과정에서 활동 모니터를 실행하면약한 엔티티에서 별도의 인덱스가 필요한 이유는 무엇입니까?
나는 약한 엔티티 등 일부 쿼리가 예상보다 오래 가고 있음을 깨달았다 SQLServer에 양식의 약한 개체에 인덱스를 생성하는 것이 좋습니다
CREATE NONCLUSTERED INDEX [<INDEXNAME>]
ON [dbo].[<TABLE>] ([<ID1>])
INCLUDE ([<ID2>])
GO
이렇게 (실제로 두 열을 모두 인덱싱했지만 결과가 거의 같다고 생각합니다.) 실제로 쿼리 속도가 향상되었습니다 (최소한 활동 모니터에서 볼 수있는 것보다).
CREATE UNIQUE NONCLUSTERED INDEX [<INDEXNAME>] ON [dbo].[<TABLE>]
(
[<ID1>] ASC,
[<ID2>] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
내 질문은 : SQLServer가 클러스터 된 인덱스를 무시합니까? 그렇다면 왜? 어떻게 든 고칠 수 있을까요? 실제로는 기본 키 인덱스와 정확히 동일한 콘텐츠를 가지고 있어야하는 다른 인덱스를 추가하는 것이 이상하게 보입니다.
약한 엔티티 란 무엇입니까? 어떻게 NHibernate와 관련이 있는가? –
쿼리 나 클러스터 된 인덱스가 모두 표시되지 않기 때문에 무시할 수 있는지, 왜 그런지는 알아낼 수 없습니다. 아마도 열이 다른 순서일까요? MS SQL Server Management Studio의 "실행 계획 표시"기능을 사용하여 쿼리 실행 방법을 탐색해야합니다. –