![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 0 Dołączył: 24.06.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod...
Niby nic skomplikowanego...
Dodam że $kol może mieć wartość co najwyżej 3... Więc razem powinno wygenerować max 12 zapytań. Dlatego, że przy $kol=3 , zapytanie $zo1=mysql_query("select * from prod where nazwa='".$nazwa."'"); też zwróci 3 rekordy Więc za 1 obrotem for wykona 3 zapytania z pętli while (albo insert albo update w zależności od warunku if)... Moje pytanie brzmi: czy i jak można zoptymalizować tą pętle, żeby generowała jak najmniej zapytań do bazy? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat a znalazłam, że ON DUPLICATE KEY UPDATE generuje 2 zapytania do bazy - pierwsze dodające i drugie [jeżeli wpis istniał] aktualizujące [tak zrozumiałam]... więc pozbywam się selecta i warunków [2 zapytań]... zamieniam na jedno zapytanie, generujące 2 zapytania do bazy z ON DUPLICATE KEY UPDATE?? Nie pamiętam szczegółów, ale nawet jeśli, to te dwa zapytania są już realizowane bezpośrednio przez DBMS, czyli z pominięciem wyciągania jakichkolwiek danych do front-endu (czyli do PHP). A jak nazwa wskazuje, UNIQUE jest indeksem, czyli sprawdzenie danej wartości jest ułamkiem sekundy. Generalnie lepiej jest obarczać takimi zadaniami bazę danych, oczywiście w granicach rozsądku, ale IMHO Twoja sytuacja jest tą właściwą. (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 00:37 |