MySql Tabelle aktualisieren

SQL:
UPDATE abc_mp3_songs a
SET a.anzahl_mp3 = (
    select count(b.*)
    from abc_mp3_songs b
     where a.album_id = b.album_id
    )
 
Hallo Yaslaw,
Habe es mal ausprobiert und erhalte eine Fehlermeldung.

PHP:
UPDATE abc_mp3_songs a SET a.anzahl_mp3 = (

    select count(b.*)

    from abc_mp3_songs b

     where a.album_id = b.album_id

    )

MySQL meldet: Dokumentation


#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '*)

   from abc_mp3_songs b

    where a.album_id = b.album_id

   )' in Zeile 2
 
Hallo zusammen,
@Yaslaw vielen Dank für deine Hilfe habe auf Ratschlag von Zvoni das b. weggelassen und es funktioniert.
Wenn ich die Abfrage mit ca. 100.000 Datensätze mache, braucht phpMyAdmin ca. 30 Sekunden.
Wenn ich die Abfrage mit 500.000 Datensätze mache, erscheint zwar die Meldung (siehe Foto) wie bei 100.000 Datensätze.
Diese Meldung ist nach einer Stunde immer noch da, passieren tut aber nichts?
Der Browser friert auch nicht ein. :rolleyes:
Habe es mit verschiedenen Browsern getestet.
Dasselbe passiert auch, wenn ich versuche bei 500.000 Datensätze einen INDEX auf album_id anlegen möchte.

Hat damit schon einer Erfahrung gemacht. (my.ini - MySQL config file)?

Mein PC System
Windows 10 Pro
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3.41 GHz
16,0 GB RAM
 

Anhänge

  • localhost.jpeg
    localhost.jpeg
    35,1 KB · Aufrufe: 4
Zuletzt bearbeitet:
Klingt irgendwie nach nem TimeOut. wobei ich aber dann auf phpMyAdmin tippe.
Passiert dasselbe auch in MySQL Workbench?
 
Such mal nach einer Einstellung(en), wo ein Timeout definiert wird.
Würde mich nicht überraschen, wenn sogar dein Test mit 100K Sätzen nicht komplett ist, und MySQL einfach nach 30 Sekunden gestoppt hat
 
Ich bin nicht so der Datenbankexperte aber habe auch mal einen Blick darauf geworfen aber weniger auf die Technik der Abfrage sondern auf die Semantik der Daten. Offenbar handelt es sich um eine Sammlung von MP3s, die jeweils zu verschiedenen Alben gehören. Diese Abfrage trägt jetzt bei jeder MP3 die Anzahl der Titel auf dem Album ein. Da schießt mir durch den Kopf: Wäre diese Anzahl nicht besser in der Tabelle mit den Alben aufgehoben? So wie es jetzt ist, entsteht doch jede Menge Redundanz.
 
@Zvoni
Ich habe nur 2 Einstellungen gefunden (my.ini)

Alte Werte
#net_read_timeout = 600
#net_write_timeout = 600

Neue Werte
net_read_timeout = 28800
net_write_timeout = 28800

hat leider nichts gebracht
Bin aber auch überzeugt, dass es was mit den Einstellungen zu tun hat :rolleyes:

@Sempervivum
Ich wollte mal was neues Ausprobieren (testen) als der Standard.

Tabelle Artist
Tabelle Album
Tabelle Genre
usw.

Wenn ich die Anzahl in einer anderen Tabelle speichern würde, müsste er auch durch 500.000 Datensätze :unsure:
 
Semper, korrekt, aber wenn ich mich recht erinner hat das mp3-Tag sogar ne eigenes Feld dafür (gesamtzahl)
im sinne von „Song 4 von 10“
 
Zurück