![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 29.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam dosc spora baze (ok. 3 mln rekordow) z firmami w ktorej pojawil mi sie problem przy zapytaniu ktore pobiera dane firmy wg. okreslonej branzy, a wyniki sortuje po polu liczbowym - 'priorytet'. Tabele mam w innoDB a czas query siega 20sekund: Oto zapytanie:
Budowa tabeli firmy:
Budowa tabeli zlaczeniowej branz:
Wynik explain zapytania pokazuje taki rezultat (niepokojacy dla tabeli firma_branza):
Czy ktos pomoze w probie ustawienia odpowiednich indeksow zeby to dzialanie zoptymalizowac ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
jak sama nazwa mówi to są podzapytania, a podzapytania w warunku WHERE mogą działać rekurencyjnie... np. mi takie cudeńko na pewnej tabeli zadziałało wyświetlając wszystkie wiersze:
a jak indeksy są pozakładane tam, gdzie nie przynoszą wymiernych korzyści (czytaj zbyt mało unikalnych wartości) to i tak niemal wszystko musi być porównane do tego dochodzą różne przeskoki w poszukiwaniu wartości w bazie... polecam link: 7 ways to convince MySQL to use the right index i to tyle w tym temacie... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 03:31 |