Hogyan lehet felgyorsítani a beállított betétet a mysql-ben?

Számomra a php parancsfájl végrehajt egy ciklusidőt, ami 10 000-et ismétel
Amíg nem javítod ki, az adatbázis továbbra is STRIKE a PHP-ben végrehajtott megvalósításodon.

Mondja el, mi a feladat, és miért oldotta meg a megoldást, miközben egy ciklusban akár 10 000 iterációt is. A probléma itt van, nem az adatbázis.

Az index0h a leginkább megfelelő opciót javasolta, de a tranzakcióval akár 20-200 hívást is tehet a php-be, az adatbázist / kiszolgálót (tranzakciók RAM-ban élőben), vagy add meg mindaddig, amíg az adatbázis nem hozza meg a rekordokat a lemezen.

Ha az adatmezőt az adatbázis körül kell vezetni, és meg kell találni azokat az adatokat, amelyekhez nincs adat az adatbázisban, és ehhez valami köze van, akkor erre SQL IN-záradék van. amely lehetővé teszi számos érték egyszerre történő ellenőrzését.

Az Ön esetében csak olyan adatot kell nyomni, amely nincs az adatbázisban, majd indítsa el a tranzakciót, indítsa el a beillesztést a hurokba és töltse be a tranzakciót. Ez minden.

Hogyan lehet legyőzni? Ismertesse az adatbázisban ismert iratokat:
VÁLASZTÁS uid FROM `users` WHERE uid a (.)
távolítsa el őket $ friends2xman-ből a PHP használatával. Hogyan kérhetsz egy olyan kérést, amely azonnal megkapja, amit akarsz, nem tudom, a fejem nem főz :)

Ami marad a $ friends2xman-ban. és az lesz az, amit be kell illesztenie az adatbázishoz.

Az In például az értékek számát korlátozza, például, ha az Oracle I-ben megadja az IN 1001 értéket - a kérés hibával zárul (ez a korlátozás szabályozott, de senki sem változtatja meg, nem indokolja). Ehelyett a munkát a listával index és limit szerint hajtottam végre (az a szám, amelyet a függvény felveszi a listáról).
azaz 600 000 bejegyzést tartalmazó lista segítségével be kell vezetni az IN-t, és meg kell találnia mindazokat, akik nincsenek az adatbázisban:
A függvény 0 indexel kezdődik, 500 bejegyzést vesz fel, a nyomvonalat képezi. index.
Első ciklus: Kezdeti index: 0, limit: 500, következő. index: 501
Az eredmény: az SQL-hez tartozó karakterláncok vesszővel elválasztott listája, amely az IN-hez szintaktikában alkalmazható, "(" + sIDS + ") számára triviális.
A második ciklus: kezdeti: 501, limit: 500, következő. index: 1001
és így tovább, amíg ki nem választom az összes 600 ezer rekordot, és nem fogok felsorolni, hogy mit kell hozzá az adatbázisba.

Kapcsolódó cikkek