![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 0 Dołączył: 3.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
witam. optymalizuje 60 000 rekordów w tabeli ale trwa to koszmaaaaarnie wolno.
zerkniecie gdzie kod jest walnięty, że tak długo to trwa? poniższy kot zapętlam kilka razy a dokument odświeżam sobie z ajaxa.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 26.08.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Zacznij od wyciągnięcia pierwszego selecta ($r) poza Twoje zapętlenie, i wywal z niego limita. I wtedy dopiero wrzuć to w pętlę.
Nie wywołuj tyle razy date() i time() - to funkcje odwołujące się do systemu, więc i dużo zajmuje ich wywołanie. Pobierz sobie potrzebne Ci dane raz i zmiennych, i używaj ich. Poniżej w liniach 6 i 7 masz 6 wywałań date(), a może być tylko 1. Zamiast 'data>=".$pocz_dnia." AND data<".$kon_dnia."' użyj BETWEEN. Nie wiem jak to wygląda w innych częściach systemu, ale jeśli dasz radę to spróbuj sobie gdzieś keszować warotść MAX(id) i nie pobierać tego za każdym razem - żeby znaleźć tą wartość MySQL za każdym razem sprawdza wszystkie rekordy w bazie. To tak na pierwszy rzut oka, może jeszcze ktoś coś dopowie ciekawego :) -------------------- urzenia.net
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 0 Dołączył: 3.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za rady. zastosowałem niemal wszystkie, niektóre faktycznie trafne. o ile time mogłem przenieść poza pętlę to już date się nie da
![]() może jest szybszy sposób od MAX(id)? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 26.08.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Nie mówiłem nic o wyjmowaniu date() z pętli. Mówiłem o jego jednokrotnym wywołaniu.
Zamiast
zrób
i później podstawiaj tylko
Tylko kurczę, jak teraz na to patrzę, to mam wrażenie że robisz dokładnie to samo 2 razy. Zdaje się że w polu 'data' tabeli 'pozycjonowanie_log' masz timestampa, którego używasz w date do pobrania danych typu rok etc, żeby z tych danych uzyskać... timestampa? Co do MAX(id) - tutaj jest nieco więcej zmian. Chodzi o to, żebyś przy każdym insert-cie zapisywał sobie w jakimś polu najnowszą wartość ID. Musisz tylko pamiętaćo uaktualnianiu tego pola przy każdym insercie. Dzięki temu unikniesz wywołania MAX(), ponierając tylko pojedynczą wartość tego pola... Nie wiem tylk oczy da się to u Ciebie w dokładnie taki sposób wykonać, nie znam systemu, ani nie mam czasu się nad tym zanadto zastanawiać, to było tylko to co mi się rzuciło w oczy patrząc na Twój kod. Ojoj, chyba coś spi*** w kodzie forum, bo się fajnie cudzysłowia eskejpują... :) EDIT: a, to tylko przy podglądzie :) Ten post edytował mysz 7.12.2006, 15:19:10 -------------------- urzenia.net
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.06.2025 - 21:14 |