Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytania ORDER BY RAND( ), Jak przyśpieszyć to zapytanie - zamula serwer
www.aukcje.fm
post
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 4.05.2010

Ostrzeżenie: (20%)
X----


Witam,

Mamy na aukcje.fm na dole panel losujący aukcje użytkownika lecz poprzez ORDER BY RAND( ) praca jest powolna i ogólnie obciąża serwer głównie gdy użytkownik ma ponad 100K aukcji i wchodzi bot + ruch ludzi.

W procesie sql to ciągle to samo zapytanie

SELECT *
FROM `tabela1`
WHERE `user` = "200"
AND `closed` =0
AND `suspended` =0
ORDER BY RAND( )

Kod php

  1. $nazwa;
  2. $id;
  3. $cena_kup_teraz;
  4.  
  5. $question='SELECT * FROM `TABELA1_auctions` WHERE `user`="'.$TPL_user_id.'" AND `closed`=0 ORDER BY RAND() LIMIT 10';
  6.  
  7. $result = mysql_query($question);
  8. $i=0;
  9. if(mysql_num_rows($result)==10){
  10. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  11. $idd[$i]=$row[0];
  12. $nazwa[$i]= str_replace(array("/","%"), " ", $row[2] );
  13. $photo_uploaded_aukcja =$row[5];
  14. $cena_produktu[$i]=cena_produktu($row[10],$row[8]);
  15. $i++;
  16.  
  17. }
  18. }
  19. else
  20. {
  21.  
  22.  
  23. $result = mysql_query("SELECT TABELA1_auctions.id,TABELA1_auctions.title, TABELA1_auctions.minimum_bid ,TABELA1_auctions.buy_now
  24. FROM TABELA1_auctions,TABELA1_featured WHERE TABELA1_auctions.id= TABELA1_featured.auction AND closed='0' AND
  25. TABELA1_featured.featured='y'
  26. ORDER BY RAND() LIMIT 0, 10");
  27. $i=0;
  28. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  29. $idd[$i]=$row[0];
  30. $nazwa[$i]=$row[1];
  31. $cena_produktu[$i]=cena_produktu($row[3],$row[2]);
  32. $i++;
  33. }
  34. }
  35.  
  36.  
  37.  


Jak można np. dać losowanie szybsze lub nie z pośród całości 100K rekordów lecz z np 200 rekordów od numeru ID aktualnej aukcji. Lub jest inny sposób?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krowal
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


LOL:
Cytat
Warning: mysql_connect() [function.mysql-connect]: Too many connections in /data/aukcjefm/aukcje.fm/includes/settings.inc.php on line 34
Warning: mysql_select_db() [function.mysql-select-db]: Too many connections in /data/aukcjefm/aukcje.fm/includes/settings.inc.php on line 37
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /data/aukcjefm/aukcje.fm/includes/settings.inc.php on line 37
Warning: mysql_query() [function.mysql-query]: Too many connections in /data/aukcjefm/aukcje.fm/includes/settings.inc.php on line 40
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /data/aukcjefm/aukcje.fm/includes/settings.inc.php on line 40
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/aukcjefm/aukcje.fm/includes/settings.inc.php:34) in /data/aukcjefm/aukcje.fm/includes/settings.inc.php on line 42
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/aukcjefm/aukcje.fm/includes/settings.inc.php:34) in /data/aukcjefm/aukcje.fm/includes/settings.inc.php on line 42
Warning: mysql_query() [function.mysql-query]: Too many connections in /data/aukcjefm/aukcje.fm/includes/https.inc.php on line 7
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /data/aukcjefm/aukcje.fm/includes/https.inc.php on line 7

Chyba już się im ktoś wziął za bezpieczeństwo (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
bim2
post
Post #3





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Cytat(krowal @ 17.12.2010, 21:51:03 ) *
LOL:

Chyba już się im ktoś wziął za bezpieczeństwo (IMG:style_emoticons/default/winksmiley.jpg)

Musiałeś wejść w trakcie kopiowania bazy danych do pliku albo testów. (IMG:style_emoticons/default/smile.gif)

Zająłem się już tym i działa. Powiem tylko, że użyłem MIN(), MAX() i odpowiednio to obrobiłem:) Jest może 10 zapytań, ale bardzo wydajnych.
Go to the top of the page
+Quote Post
kiler129
post
Post #4





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(bim2 @ 17.12.2010, 22:44:12 ) *
Musiałeś wejść w trakcie kopiowania bazy danych do pliku albo testów. (IMG:style_emoticons/default/smile.gif)

Zająłem się już tym i działa. Powiem tylko, że użyłem MIN(), MAX() i odpowiednio to obrobiłem:) Jest może 10 zapytań, ale bardzo wydajnych.


O tym serwisie sporo wiadomo już (IMG:style_emoticons/default/smile.gif)
To całe oprogrmowanie to śmiech na sali i kpina w biały dzień - brak obsługi jakichkolwiek błędów.

Miejmy nadzieje, że może idą po rozum do głowy i kogoś zatrudnią.

Ten post edytował kiler129 18.12.2010, 00:45:27
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: 8.10.2025 - 14:43