Mutiple update do SQL – zkrácení doby zpracování

Rndoom04
Člen | 72
+
0
-

Dobré odpoledne,
mohl by mě někdo prosím pošťouchnout, jakým způsobem by šlo provést multiple update do databáze?

Momentálně mi to funguje tak, že projedu JSON soubor (odtud tahám informace a zpracovávám do databáze) skrze foreach a připravím SQL na update to databáze. Těch záznamů jsou tisíce a trvá dost dlouho, než se vše propíše do databáze (pokud bych to dělal jedno po druhém). Lze to nějakým inteligentním způsobem ulehčit?

Vždy updatuju ve stejné tabulce stejné záznamy (jen jinými hodnotami pro jiná ID). Přemýšlel jsem, že bych si mohl připravit array, ve kterém by bylo vše připraveno a jen se to jedním SQL poslalo do databáze. Ale to už nevím jak bych udělal.

Sice by se tato akce děla jen jednou denně ve formě cronu, ale i tak se momentálně zpracovává skoro 2 minuty.

Moc děkuji za každý nápad. :)

David Matějka
Moderator | 6445
+
0
-

Ahoj,

  1. ujisti se, že to provádíš v jedné transakci
  2. pokud ani to výkon nezlepší, tak jelikož databáze bohužel nemají nějaký batch update, tak můžeš zkusit workaround s insert ... on duplicate key update, tím to můžeš dát do jednoho statementu a můžeš ušetřit třeba na síťové odezvě
Rndoom04
Člen | 72
+
0
-

David Matějka napsal(a):

Ahoj,

  1. ujisti se, že to provádíš v jedné transakci
  2. pokud ani to výkon nezlepší, tak jelikož databáze bohužel nemají nějaký batch update, tak můžeš zkusit workaround s insert ... on duplicate key update, tím to můžeš dát do jednoho statementu a můžeš ušetřit třeba na síťové odezvě

Ahoj,
moc děkuji za odpověď. V transakci jsem to samozřejmě neměl. Upravil jsem celý princip a již je to o poznání lepší. Z cca 2 minut jsem se dostal na 3 vteřiny, ale to už ude brzdit něco jiného, co taky předělám.

Ještě jednou děkuji, vyřešeno. :)