![]() |
![]() |
![]()
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%) ![]() ![]() |
Wyślij jak możesz explain plan, to będę Ci mógł powiedzieć, w czym problem.
Teraz mogę Ci jedynie powiedzieć, że generalnie duże zużycie zasobów (w Twoim przypadku obciążenie procesora nawet w 100%) jest przy złączeniach typu 'hash'. Można pobawić się podpowiedziami do optymalizatora, np.:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 22:21 |