Próbuję poprawić wydajność kwerendy, która działa bardzo wolno. Po przejściu przez rzeczywisty plan wykonania; Zauważyłem, że indeks klastrowany osiąga 82%. Czy jest jakiś sposób, aby poprawić wydajność na Index Seek? Poniżej znajduje się obraz problemu z planu wykonania, a także indeks i tabela, z których korzysta.Jak poprawić wydajność w indeksie klastrowym wyszukaj
alt text http://img340.imageshack.us/img340/1346/seek.png
Index:
/****** Object: Index [IX_Stu] Script Date: 12/28/2009 11:11:43 ******/
CREATE CLUSTERED INDEX [IX_Stu] ON [dbo].[stu]
(
[StuKey] ASC
)WITH (PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
stołowe (niektóre kolumny pominięty dla zwięzłość):
CREATE TABLE [dbo].[stu](
[StuCertKey] [int] IDENTITY(1,1) NOT NULL,
[StuKey] [int] NULL
CONSTRAINT [PK_Stu] PRIMARY KEY NONCLUSTERED
(
[StuCertKey] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
"To zależy." ... – RBarryYoung
Czy jest to zły pomysł, aby indeks klastrowany był ustawiony na coś innego niż klucz podstawowy? Kwerenda nigdy nie używa klucza podstawowego, więc uznałem, że lepiej byłoby utworzyć indeks klastrowany w kolumnie, która jest połączona najbardziej (StuKey) –
Czy możesz opublikować zapytanie. Ponadto wiele wierszy znajduje się w tabeli, a w przybliżeniu ile jest zwracanych przez zapytanie? – dan