Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Wielkość zapytania do bazy kontra ilość zapytań., kwestie wydajnościowe zadawanych pytań
elmozaur
post
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


Chciałbym się poradzić w następującej kwestii jakościowo/efektywnej:
mam tablice w php zawierająca 400 pozycji (klucz=>wartosc),
pętlą foreach przelatuje po tych pozycjach i przy każdej robię jeden INSERT do bazy,

wersja 1:
pobieram id powstałego rekordu i na jego podstawie robie w osobnej tabeli 20 innych INSERTów.
(pytania do bazy są małe ale jest ich dużo - 20 przy każdej iteracji) = 400 zapytań

wersja 2:
pobieram id powstałego rekordu i na jego podstawie składam jedno zapytanie INSERT do bazy.
(pytanie jest wprawdzie jedno, ale duże i za jednym razem wrzuca 20 pozycji) = 40 zapytań

Biorąc pod uwage, że dane do każdego wariantu to okolo 8 kolumn z INTami lub VARCHARami - czy lepiej zadawać bazie MySQL dużo małych czy mniej ale większych pytań (IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kreatiff
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Kiedyś zdaje się pytałem o coś podobnego. Nie ma jednoznacznej odpowiedzi. To jest kwestia optymalizacyjna, trzeba przetestować. Ale u mnie różnice były pomijalne, i bardziej opłacało się zachować czytelność zapytań, niż brnąć w jedno czy kilka wielkich.

Tak na marginesie dodam, że samo zapytanie z pytajnikami czy zmiennymi oraz prepare() robimy przed pętlą, a w samej pętli już tylko bindujemy dane i wykonujemy zapytanie:
  1. $q = "INSERT INTO tab VALUES ?";
  2. $q = $db->prepare($q);
  3. for ($i=0;$i<20;$i++) {
  4. $q->bindValue(...);
  5. $q->execute();
  6. // albo zamiast powyższych 2 linijek $q->execute(array(...));
  7. }
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: 14.10.2025 - 21:01