moram odraditi update na jednoj tablici.
Ovako mi izgleda query:
UPDATE PAYMENT set payout_type = ‘CUSTOM’, last_modified = last_modified
WHERE connection_id =11
AND type != ‘CUSTOM’
and service IN (1,2,3,4,5,6,7,8)
Sada ovaj update bi trebao odraditi preko 3 milijon redova ali pojede mi cijeli disk space i sve mi zalocka.
Mislio sam koristiti LIMIT po jednom updateu ali ne znam kako ga ispravno postaviti.
Može li netko savjetovati ili pomoći?
UPDATE PAYMENT
set payout_type = 'CUSTOM',
last_modified = last_modified
WHERE connection_id =11
AND type != 'CUSTOM'
AND id < (SELECT MAX(id) AS id FROM PAYMENT LIMIT BY 5000)
and service IN (1,2,3,4,5,6,7,8)
i onda nakon prvug upita ide
UPDATE PAYMENT
set payout_type = 'CUSTOM',
last_modified = last_modified
WHERE connection_id =11
AND type != 'CUSTOM'
AND
( id > (SELECT MIN(id) AS id FROM PAYMENT LIMIT BY 5000 OFFSET 4999)
AND id < (SELECT MAX(id) AS id FROM PAYMENT LIMIT BY 5000 OFFSET 4999))
and service IN (1,2,3,4,5,6,7,8)
Ovo bi bio jedan nacin. Nisam provjeravao u MySQL ali mislim da upit nebi trebao vracati nikakve greske.
Ma je ali zaboravi to. Malo sam ga zakomplicirao iako nije potrebno. Na svoj query nakalami samo ovo LIMIT BY 5000, a onda nakon prvog querya dodas i offset, LIMIT BY 5000 OFFSET 5000 i to bi trebalo biti to
Dakle cjelokupan query onda izgleda ovako:
Prvi:
UPDATE PAYMENT
set payout_type = 'CUSTOM',
last_modified = last_modified
WHERE connection_id =11
AND type != 'CUSTOM'
and service IN (1,2,3,4,5,6,7,8)
LIMIT BY 5000
Drugi:
UPDATE PAYMENT
set payout_type = 'CUSTOM',
last_modified = last_modified
WHERE connection_id =11
AND type != 'CUSTOM'
and service IN (1,2,3,4,5,6,7,8)
LIMIT BY 5000 OFFSET 5000
Treci:
UPDATE PAYMENT
set payout_type = 'CUSTOM',
last_modified = last_modified
WHERE connection_id =11
AND type != 'CUSTOM'
and service IN (1,2,3,4,5,6,7,8)
LIMIT BY 5000 OFFSET 10000
Nevezano za SQL query … ali na koju foru pojede disk space? Jedino sto ti moze pojesti/povecati tmp file i naravno koristiti vise cpu-a i rama. Drugo nista. Ako ti na 3M zapisa sporo radi … i previse resursa jede … e onda imas problem, buduci da sumnjam da ti je baza dobro optimizirana i da koristis pravi engine koji ti treba. Sto bi recimo da ima 50M zapisa ?
e upravo to pojede na foru da poveća TMP file, i to ga ogromno poveća, u roku par minuta mi je pojeo preko 15 gigi.
a gle ne radim na održavanju baze, a ta baza je davno napravljena i tek sam počeo raditi sa time. Zato ni ne znam puno stvari i trebam pomoć oko nečega pošto mi u firmu nisu dali mentora i moram se sam snalaziti.