Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Mysql]Group by optymalizacja
Crisu
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 11.08.2006

Ostrzeżenie: (0%)
-----


Witam!
Mamy taki przypadek. Jest jedna wieksza tabela , założmy 2 mln rekordów do której dołączamy kilka mniejszych po 200-400 każda.
Czyli coś w stylu :

  1. SELECT st.pole2,bt.pole1,bt.pole2, st.pole1,MAX(bt.pole3)
  2. FROM big_table bt
  3. LEFT JOIN small_table st ON (st.id_small=bt.id_small)
  4. WHERE bt.pole2='T' AND bt.pole1=21
  5. GROUP BY st.pole2


Wszystko fajnei działą gdy duża tabela ma ok 100k rekordów. Gdy wchodzimy na większa ilość krotek , wszystko diametralnie zwalnia.
Czy ktoś ma może pomysł jak takie zapytanko zooptymalizować ? Indeksy są założone na PK i FK , i testowałem już kilka wariantów z indeksami na innych polach (m.in na tym po którym grupuje). Efekt zerowy.
Silnik InnoDB.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ges
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


Przy takiej ilości wydaje mi się, że ciężko bedzie Ci już coś zoptymalizować samym kodowaniem.

Jak dla mnie rozwiązaniem dla Ciebie przyszłościowym byłoby skorzystanie z partycjonowania bazy danych.
Dzielisz tą wielką tabele na partycję (każda zawiera "kawałek" Twojej bazy).
Wykonując takie zapytanie przy konfiguracji z partycjami wyśle zapytanie do każdej partycji osobno, każda partycja zwróci swój "kawałek odpowiedzi" potem zostaną złożone do "kupy".

Polecam lekturę:
http://dev.mysql.com/doc/refman/5.4/en/par...g-overview.html

Są jeszcze klastry, ale to może być na wyrost mocno.

Btw. vokiel: od kiedy MyIsam jest szybsze od InnoDb ? InnoDb jest ~30% wydajniejsze w większości przypadków.
MyIsam będzie lepszym wyborem gdy zaczniemy używać Full Tree Search oraz dużej ilości BLOBów.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 17:25