Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy oplaca sie cachowac zapytania bazy danych, Jesli cachuje dany box
vadergb
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.06.2009

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


Mam takie pytanie

Oplaca sie cachowac zapytania z bazy danych jesli cachuje dany box.


np.
cachuje calego newsa(ilosc komentarzy, autora, kategorie, tagi etc.)

Tak na chlopski rozum nie oplaca sie cachowac zapytan i tego boxu (wtedy najpierw bedziemy musiel cachowac zapytanie a potem dany box - co za tym idzie bezsensu robimy cachowanie bazy).

Jesli moje myslenie jest dobre i w tym przypadku nie oplaca sie cachowac zapytania to mozna zrobic tak z wszystkim tj.

komentarze (nie cachujemy zapytan tylko caly box z komentarzami tj. autor, + dodatkowae opcje(np ilosc znajomych etc))

Patrzac na to cachowanie bazy danych jest zbedne(biorac pod uwage ze np. mysql ma system wlasny cachujacy)...

Jesli sie myle prosze o napisanie co jest bardziej oplacalne(mowimy o tym aby strona chodzila szybciej i mowimy tu o stronie gdzie dziennie jest grubo ponad 100 tys odslon ! )
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vadergb
post
Post #2





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.06.2009

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


Zrobilem cos takiego:
  1. <?php
  2. $query = "SELECT news . * , GROUP_CONCAT( DISTINCT game ORDER BY game DESC  SEPARATOR  ', ' ) as dupa
  3.         FROM news LEFT JOIN news_cat ON news_cat.id_news = news.id_news
  4.          LEFT JOIN games ON news_cat.id_cat = games.id_game GROUP BY id_news LIMIT 0 , 30";
  5.        $result = mysql_query ( $query );
  6.        while ( ($line = mysql_fetch_array ( $result )) ) {
  7.        }
  8. ?>



vs
  1. <?php
  2. $query = "SELECT * from news";
  3.        $result = mysql_query ( $query );
  4.        while ( ($line = mysql_fetch_array ( $result )) ) {
  5.            
  6.    $query22 = "SELECT games.game from news_cat,games where news_cat.id_news=".$line['id_news']." and news_cat.id_cat=games.id_game";
  7.        $result22 = mysql_query ( $query22 );
  8.        while ( ($line22 = mysql_fetch_array ( $result22 )) ){
  9.        }
  10.        }
  11. ?>


przy petli 100x pobran:

1 sposob 0.24362802505493
2 sposob 0.35362802505493

Baza liczy okolo 20-30 newsow(malo), kategori(games) - liczy okolo 20, a a news_cat liczy tez okolo 20


Wszystko fajnie... ale co jak chcemy pokazac inaczej te dane niz nazwa1, nazwa2, nazwa3 ?

jesli np chcemy zrobic z tego <a href="link do newsow tylko danej kategori>nazwa1</a>,<a href="link do newsow tylko danej kategori>nazwa2</a>?

Mamy pobrac w nastepne pole(albo to samo id)? i bawic sie tym? utworzyc z tego tablice a potem wyswietlic? (Wszystko to kosztuje czas)...


Znalazlem jeszcze jeden sposob
  1. <?php
  2. $query = "SELECT * from news order by id_news";
  3.        $result = mysql_query ( $query );
  4.        
  5.       $wynik = array();
  6.        while ( ($line = mysql_fetch_array ( $result )) ) {
  7.               $wynik[$line['id_news']] = array( // 1
  8.                                'id_news' => $line['id_news'],
  9.                                'title' => $line['title'],
  10.                                'cat' => array() // 2            
  11.                        );
  12.        }
  13.    $query22 = "SELECT news_cat.id_news,games.game,games.id_game from news_cat,games where news_cat.id_cat=games.id_game";
  14.        $result22 = mysql_query ( $query22 );
  15.        while ( ($line22 = mysql_fetch_array ( $result22 )) ){
  16.             $wynik[$line22['id_news']]['cat'][] = array( // 4
  17.                                'game' => $line22['game'],
  18.                                'id_game' => $line22['id_game']                
  19.                        );
  20.        }
  21.         $i=0;  
  22.     foreach($wynik as &$news_show)
  23.                {
  24.                    $i++;
  25.                        echo '<h3>'.$i.'. '.$news_show['title'].' ('.$news_show['id_news'].')</h3>';
  26.                        foreach($news_show['cat'] as &$kategoria)
  27.                        {
  28.                                echo '<p><i>'.$kategoria['game'].'</i>
  29.                                (Wyd. '.$kategoria['id_game'].')</p>';                  
  30.                        }
  31.                }
  32.    }
  33. ?>


Jesli chodzi o czas wykonania dla 100 pobran to jest on wiekszy od 1 sposob z postu wyzej i mniejszy od 2 sposob z postu wyzej.

Tylko ze tych kategori nie ma duzo (okolo 20)... a co jak ich bedzie 200 ? Ten sposob wtedy sie mija z celem...



Jaka jest najbardziej optymalna droga?

Ten post edytował vadergb 11.06.2009, 21:16:01
Go to the top of the page
+Quote Post

Posty w temacie
- vadergb   Czy oplaca sie cachowac zapytania bazy danych   10.06.2009, 18:35:39
- - erix   CytatTak na chlopski rozum nie oplaca sie cachowac...   10.06.2009, 19:25:45
- - vadergb   Ale zauwaz ze jak mamy zapisany caly news w cache ...   10.06.2009, 19:48:39
- - erix   No to tym lepiej. ;] Cytatbiorac pod uwage ze np....   10.06.2009, 19:58:04
- - vadergb   Jesli mowisz o frameworkach to one sa zlym wyjscie...   10.06.2009, 20:34:50
- - erix   CytatMowimy o przypadku gdy cachujemy calego boxa ...   10.06.2009, 20:49:40
- - vadergb   Czyli jesli chce zrobic najbardziej wydajna strone...   10.06.2009, 21:06:46
|- - phpion   Cytat(vadergb @ 10.06.2009, 22:06:46 ...   10.06.2009, 21:10:09
- - vadergb   Niby sa niewielki roznice ale gdy jest 1000 osob o...   10.06.2009, 21:29:59
- - fifi209   Jeżeli chcesz mieć szybko pisz własne biblioteki w...   10.06.2009, 21:34:08
- - erix   CytatRóżnice są na tyle niewielkie, ...   10.06.2009, 21:37:39
- - vadergb   CytatCytat Różnice są na tyle niewielkie...   10.06.2009, 21:57:17
- - erix   CytatCzyli powinienem sobie odpuscic PDO? i napisa...   10.06.2009, 22:25:57
- - vadergb   co do CytatPS. O shm/akceleratorach przypominać ch...   10.06.2009, 22:43:24
- - erix   Jeśli chodzi o shm, to i od programisty zależy... ...   10.06.2009, 22:54:10
- - vadergb   CytatCytat Tak wykonamy robiac petle w petli a gdy...   11.06.2009, 11:37:13
|- - phpion   Cytat(vadergb @ 11.06.2009, 12:37:13 ...   11.06.2009, 12:36:38
- - vadergb   Zrobilem cos takiego: [PHP] pobierz, plaintext ...   11.06.2009, 19:23:26


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

 



RSS Aktualny czas: 17.10.2025 - 07:55