Hallo,
ich habe eine Extra Tabelle eines Lieferanten in MySQL angelegt. Es sind ca 1mio Einträge mit id auto_increment.
Ein Spalte habe ich für die ordernummer aus dem Shop reserviert.
Wenn ich die Extra Tabelle die ordernummer aus dem Shop mittels EAN-Vergleich reinlese… braucht es ewig bishin zu timeout.
UPDATE atmextratabelle atm
INNER JOIN s_articles_details AS sad ON sad.ean = atm.ean
SET atm.ordernumber = sad.ordernumber
Kann man diese SQL verbessern? ggf mittels PHP eine Schleife wo man nur 1000 Einträge vergleicht?
Oder wäre hier PHP Arrary-Vergleich Sinnvoll?
Oder sind Procedures eine Lösung?
Danke und Gruss
ich suche nur DIE eine Lösung des best practice ;-) @Moin
simkli
6. November 2020 um 15:12
4
Hast du für die Spalten atm.ean und sad.ean einen Index angelegt?
nein, allerdings wenn ich das mache ist es nicht gerade wirklich schneller. muss man da ggf an der Datenbankeinstellung noch was rumschrauben oder versteht das jeder DB per default was es mit dem Index zu tun hat? Oder gibts da Limitierungen für den Index? @simkli
simkli
7. November 2020 um 16:04
6
Also du musst den Index bei den beiden Tabellen hinzufügen. Wenn du das gemacht hast, sollte das schon einiges bringen.
Ohne Index geht MySql für jede Zeile in atm einmal von oben nach unten durch stm bis es den Eintrag gefunden hat. Das dauert natürlich.
An der Query fällt mir auf die schnelle nichts auf, was man machen kann, damit die schneller wird.