![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Witam
Struktura tabel:
Zapytanie:
Niestety w tabeli status ilość rekordów wynosi 500 tysięcy do miliona może nawet kilku w ekstremalnych przypadkach. Całe zapytanie wykonuje się około 2,5 sekundy przy 400k rekordów. Wąskimi gardłami w tym zapytaniu są te dwa pod zapytania jednak niezbyt mam pojęcie jak się ich pozbyć i zastąpić czymś bardziej optymalnym. Z góry dziękuje za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
lepiej zamiast NOW() wrzucic statyczna date z php, NOW jest niedeterministyczne i nie bardzo mysql potrafi je cachowac
jesli wrzucisz zamiast tego jakas stala, to wprawdzie zapytanie za pierwszym razem wykona sie 2.5 sec, ale za drugim juz 0.1 (IMG:style_emoticons/default/winksmiley.jpg) wydaje mi sie ze ten count nie musi byc w podzapytaniu, chyba wystarczy zwykle grupowanie po p.id najmniejsze statusy drugiego podzapytania przygotowalbym sobie wczesniej w tabeli tymczasowej i sklejal to inner zawsze gdy robilem dane nadmiarowe to pozniej zalowalem (IMG:style_emoticons/default/smile.gif) Ten post edytował yevaud 19.06.2010, 00:13:13 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 08:36 |