Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 20.03.2007 Ostrzeżenie: (0%)
|
Witam. Mam następujący problem:
Mam widok powiedzmy "A". Widok ten składa dane z trzech różnych tabel. Robie następujące zapytania na widoku: Select A.* FROM A WHERE pole1=1 AND pole2=2 AND pole3=3 Select A.* FROM A INNER JOIN TABELA ON A.klucz=TABELA.klucz WHERE TABELA.pole1=1 AND TABELA.pole2=2 AND TABELA.pole3=3 Pierwsze zapytanie wlecze się strasznie (nawet 30 sek) i obciąża procesor 100% - są założone indeksy na polach w warunkach - rekordów jest parę tysięcy. Drugie zapytanie zwraca wynik momentalnie - a różnica tylko taka, że łączę ponownie JOINEM jedną tabelę zawartą w tym widoku i zakładam warunki bezpośrednio na tabeli (a nie na widoku, który zwraca pola z tej tabeli). Czy możecie mnie oświecić dlaczego tak dziwnie się to zachowuje? Pozdrawiam |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Pierwsze zapytanie używa złączeń typu HASH, drugie NESTED LOOPS.
W zdecydowanej większości przypadków HASH jest dużo szybszy dlatego spróbuj przed wykonaniem zapytania (tego 'wolnego') zmienić ustawienia optymalizatora zapytań :
To powinno zmusić SZBD do korzystania ze złączeń typu HASH. |
|
|
|
kr27 Widoki - problem w wydajnościa 20.03.2007, 03:30:14
prond Wyślij jak możesz explain plan, to będę Ci mógł po... 20.03.2007, 09:01:24
kr27 ZAPYTANIE 1: Działa bardzo szybko:
SELECT b_faktu... 20.03.2007, 18:43:53
kr27 Dziękuje bardzo. Pomogło:) Śmiga tak samo szybko j... 24.03.2007, 13:55:19 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 23:11 |