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
elmozaur
post
Post #2





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

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


Chyba źle napisalem. Może bardzo uproszczę moj problem:

wariant 1:
  1. for ($i=0;$i<20;$i++) {
  2. $sql = "INSERT INTO tab VALUES('','1','2','3','4','5','6','7','8','9','10')";
  3. $q = $db->prepare($sql);
  4. $q->execute();
  5. }


wariant 2:
  1. $sql = "INSERT INTO tab VALUES";
  2. for ($i=0;$i<20;$i++) {
  3. $sql .= "('','1','2','3','4','5','6','7','8','9','10'),";
  4. }
  5. $sql = substr($sql, 0, -1);
  6. $q = $db->prepare($sql);
  7. $q->execute();


Tak czy owak musze zrobić takie zapytanie - pytanie czy lepiej składać jedno duże zapytanie czy wysyłać kilkanaście mniejszych (IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
goartur
post
Post #3





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 19.10.2014

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


Cytat(elmozaur @ 21.05.2015, 13:31:26 ) *
Chyba źle napisalem. Może bardzo uproszczę moj problem:

wariant 1:
  1. for ($i=0;$i<20;$i++) {
  2. $sql = "INSERT INTO tab VALUES('','1','2','3','4','5','6','7','8','9','10')";
  3. $q = $db->prepare($sql);
  4. $q->execute();
  5. }


wariant 2:
  1. $sql = "INSERT INTO tab VALUES";
  2. for ($i=0;$i<20;$i++) {
  3. $sql .= "('','1','2','3','4','5','6','7','8','9','10'),";
  4. }
  5. $sql = substr($sql, 0, -1);
  6. $q = $db->prepare($sql);
  7. $q->execute();


Tak czy owak musze zrobić takie zapytanie - pytanie czy lepiej składać jedno duże zapytanie czy wysyłać kilkanaście mniejszych (IMG:style_emoticons/default/questionmark.gif) ?

Oczywiscie lepiej wybrac wariant ktory ma mniejsze zapytanie, bazie o wiele latwiej znalesc informacje.
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: 10.10.2025 - 02:25