Optymalizacja zapytania SELECT

0

Cześć wszystkim!
Mam do Was pytanie jak najbardziej można zoptymalizować to zapytanie:

Select Dane1, Dane5, Dane6, Dane7 FROM Test
INNER JOIN Test2 ON Test.Id=Test2.IdTest
WHERE Dane5 > 199850

Domyślnie mam założone 2 indeksy pogrupowane na kluczach głównych.
Łączny koszt(estimated subtree cost) wynosi 4,96352

Jakie indeksy założyć/zdjąć aby przyśpieszyć wykonanie powyższej instrukcji.

Co zrobiłem:

ALTER TABLE test2 DROP CONSTRAINT FK__test2__IdTest__7F60ED59
ALTER TABLE test DROP CONSTRAINT PK__test__7C8480AE
CREATE CLUSTERED INDEX cl_index_1 ON Test(Dane5)

Zdjąłem te 2 pogrupowane indeksy.
Założyłem jeden pogrupowany na Dane5, gdyż czytałem, że warto założyć ten typ indeksu na wyszukiwanie zakresowe(mimo, że jest to klucz obcy).
Łączny koszt(estimated subtree cost) wynosi 4,02503
Więc trochę się poprawiło.
Próbowałem jeszcze zakładać jakieś nie pogrupowane, ale one niestety nie pomagały wcale.

Macie może jakieś sugestie/porady ?

0

Teraz zrobiłeś trochę bez sensu bo pozbyłeś sie indeksów z kluczy po których złączasz. Tam też powinieneś mieć indeksy.

0

Czyli zostawiam indeksy pogrupowane na kluczach, a więc pozostają mi tylko do wykorzystanie nie pogrupowane. Jak je najlepiej założyć?

1

Cześć,

1)Jaki typ danych ma dane5, czy jest statyczny(nieupdateowany), unikalny, w jaki sposób rośnie?
2)Jaki typ ma test.id, pewnie jest unikalny, jak rośnie identity, sequence?

Jak odpowiesz na to pytanie to będzie można coś więcej powiedzieć, pamiętaj, że może być tylko jeden clustered index, i w zależności od odpowiedzi na powyższe pytanie może się okazać, że zrobiłeś sobie więcej kuku tym indeksem jeżeli chodzi o wszystkie operacje aniżeli sobie pomożesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1