![]() |
![]() |
![]()
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) ? |
|
|
![]() |
![]()
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:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 21:01 |