La mine scriptul php execută o buclă în timp ce repetă 10 000 ra
În timp ce nu rezolvați, baza de date va continua să STRIKE implementarea pe php.
Spuneți-mi ce este sarcina și de ce ați rezolvat aceasta, cu un ciclu de până la 10.000 de iterații. Problema este aici, nu baza de date.
index0h a oferit cea mai bună opțiune, dar chiar și cu tranzacția, 20-200 face apel la php-ul, pune baza de date \ Server (tranzacție care trăiesc în memoria RAM) sau atârnă tot timpul pentru a pune toate baza de date este scris pe disc.
Dacă aveți nevoie pentru a scăpa de o serie de baze de date și pentru a găsi toate înregistrările pentru care nu există date în baza de date și ceva de a face cu ea, atunci aceasta este starea SQL. care va permite verificarea simultană a mai multor valori.
În cazul dvs., trebuie doar să stoarceți datele care nu sunt în baza de date, apoi să începeți tranzacția, să începeți introducerea în buclă, să finalizați tranzacția. Asta e tot.
Cum să depășim? Obțineți înregistrări cunoscute în baza de date:
SELECT uid FROM `users` WHERE uid in (.)
eliminați-le din $ friends2xman folosind PHP. Cum să faci o cerere care să obțină imediat ceea ce vrei, nu știu, capul meu nu se găsește :)
Ce va rămâne în $ friends2xman. și va fi cea de care aveți nevoie pentru a alimenta baza de date pentru inserare.
În Într-o limită a numărului de valori, de exemplu, în cazul în care baza de date Oracle voi indica la 1001 valoarea IN - cererea eșuează (această restricție este reglementată, dar nici unul din ea nu se schimba, de ce nu). În schimb, am implementat lucrarea cu lista cu index și limită (numărul de date pe care funcția o va ridica din listă).
și anume având o listă de 600 000 de intrări, trebuie să o conduceți prin IN și să găsiți pe toți cei care nu se află în baza de date:
Funcția începe cu indexul 0, are 500 de intrări, formează urmă. index.
Primul ciclu: indice inițial: 0, limită: 500, următorul. index: 501
Rezultatul: o listă de șiruri de caractere separate pentru varianta SQL, potrivită pentru IN prin sintaxă, este trivială pentru "(" + sIDS + ")".
Al doilea ciclu: inițial: 501, limită: 500, următorul. index: 1001
și așa mai departe, până când voi selecta toate cele 600 de mii de înregistrări și nu voi forma o listă a ceea ce trebuie să adaug la baza de date.