Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Zend_Db - wydajność
Crazy_Ivan
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2007

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


Witam

Mam problem z długością wykonywania zapytania do bazy. Wszystko pięknie działało jeszcze jak miałem gdzieś około 420 rekordów. Po zwiększeniu bazy do 520 rekordów po prostu nie wyrabia i wynikiem jest pusta strona.

  1. <?php
  2. $where .= " WHERE SLO_haslo LIKE '$haslo%'";
  3. (...)
  4.    $registry = Zend_Registry::getInstance();
  5.    $db = $registry->get('db');
  6.    $query = 'SELECT count(*) FROM slownik'.$where;
  7.    $hasla = $db->fetchAll($query);
  8. ?>


Nie wiem czy to jest spowodowane powolnym Framem czy też ja jakoś źle pobieram te dane ? Ma może ktoś jakiś pomysł ? Prosił bym o pomoc.
Go to the top of the page
+Quote Post
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Ogólnie wyszukiwanie po % nie należy do najszybszych (jeżeli da rade zrezygnuj z tego) i wydajniejszych rzeczy.
Może pomógłby indeks na SLO_haslo o raz COUNT(klucz_glowny_tabeli).
Go to the top of the page
+Quote Post
Crazy_Ivan
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2007

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


Niestety żądnej różnicy. Nawet po usunięciu całego WHERE. Jest to dla mnie strasznie dziwne bo 510 rekordów to nie jest wielka liczba :|.
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A próbowałeś to zapytanie zapodać ręcznie w phpmyadmin? Zobacz wtedy prędkość.
Go to the top of the page
+Quote Post
Crazy_Ivan
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2007

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


Testowałem już to w phpMyAdmin i wszystko grało dlatego mój typ padł na klasę Zend_Db. Jednak właśnie doszedłem do tego że myliłem się. Wszystko się rozbiło w widoku. Przy obróbce danych. Wyświetlam hasło oraz klika pierwszych słów z opisu. Oczywiście nie chciałem żeby mu ucinało w połowie słowa wiec dopisałem mały upgrade. Właśnie zastanawia mnie fakt dlaczego to tak się rozbija gdyż mam zrobione stronicowanie i maksymalna wielkość tablicy jaka jest przekazywana liczy 10 elementów.

W taki sposób obrabiałem opis, po wykomentowaniu wszystko ruszyło.

  1. <?php
  2. $ile=60;
  3. $opis = strip_tags($hasla['SLO_tresc']);
  4. /*
  5. if($opis[strlen($opis)-1] != ' ')  $opis .= ' ';
  6. if ($ile > strlen($opis)) $ile = strlen($opis);
  7. while ($opis[$ile] != ' ')
  8. {
  9.     $ile++;
  10. }
  11.  */
  12. echo substr($opis,0,$ile).' (...)' ;
  13. ?>
Go to the top of the page
+Quote Post
eai
post
Post #6





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

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


Sprawdź memory_limit, ZF tworząc obiekty pożera sporo pamięci. Przy kilku rekordach nie będzie problemu, lecz jeśli pola tekstowe są pokaźnych programów może Ci się skończyć pamięć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Druga sprawa to PDO. ZF używa biblioteki pdo mysql do łączenia się z bazą, natomiast phpmyadmin bezpośrednio mysql (o ile dobrze pamiętam), czasami miałem problemy z PDO ale to przy bardziej złozonych zapytaniach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Zwiększ limit do 512M w php.ini i sprawdź.


BTW: Zainteresuj się silnikiem MYISAM + indeksy FULLTEXT.
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html, oferuje wiele ciekawych funkcji do wyszukiwania haseł + obliczanie trafności wyniku.

Ten post edytował eai 4.10.2008, 08:30:37
Go to the top of the page
+Quote Post
Crazy_Ivan
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2007

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


Dzięki wszystkim za odpowiedz. Problem był trywialny. Wszystko rozbijało się pętli gdy próbowałem sprawdzić wartość w tablicy która wykraczała poza zakres indeksu.
Go to the top of the page
+Quote Post

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: 19.12.2025 - 13:50