Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 11 Dołączył: 9.07.2010 Skąd: Warszawa Ostrzeżenie: (0%)
|
Witam!
Mam kod, który aktualizuje mi dane na stronie ale wykonuje się on dosyć długo ze względu na złożoność operacji jaką musi wykonać. Postanowiłem podzielić proces na pare razy przy użyciu ORDER BY RAND() i LIMIT. Strona działa dwa razy szybciej, ale gdzie nie spojrzę ORDER BY RAND() jest krytykowane z każdej strony. W normalnym zapytaniu aktualizowane są dane około 150 elementów, przy rand dałem limit 25. Drugą sprawę jest, że nie do końca rozumiem zapis tego kodu, dodałem komentarze tam gdzie wiem co się dzieję, a tam gdzie nie mam nadzieje że mi ktoś wyjaśni wtedy może będę miał możliwośc zrobienia czego samemu. Kod:
Struktura w bazie danych oraz nałożone indeksy: test_site(lista obiektów do których można się zapisać): (IMG:http://clip2net.com/clip/m106573/thumb640/1387410487-clip-234kb.png) test_sites(tutaj znajduję się liczone zapisy): (IMG:http://clip2net.com/clip/m106573/thumb640/1387410544-clip-86kb.png) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Nie analizowałem Twojego kodu (za wcześnie :]), ale:
1. Jeżeli pula rekordów, które chcesz wymieszać (ORDER BY RAND()) to zaledwie 150, nie masz się czego obawiać - skorzystanie z tej konstrukcji nie jest niczym złym, prawdopodobnie jedno z szybszych rozwiązań i pod względem czasu i wydajności. 2. Na pierwszy rzut oka, masz tam kilka zagnieżdżonych pętli, w których wykonują się zapytania - zapewne ilość generowanych zapytań leci w tysiącach jak nie dziesiątkach tysięcy. Podaj swoją strukturę bazy oraz jaką operację chcesz wykonać bo wygląda na to, że chwili obecnej robisz to źle. |
|
|
|
boro11 [MySQL][PHP] ORDER BY RAND() - optymalizacja 19.12.2013, 00:49:14
boro11 Przerobiłem kod i udało mi się go zrobić porządnie... 19.12.2013, 07:50:03
Crozin 1. Wykonaj zapytanie EXPLAIN SELECT ... Twojego za... 19.12.2013, 08:00:56 ![]() ![]() |
|
Aktualny czas: 3.04.2026 - 00:40 |