MySQL Fragen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

MySQL Fragen

Beitrag von Bert » 05.10.2005 17:31:36

Beruflich nutz ich immer Oracle BDs und habe bisher nicht groß über den Rand geschaut (nur mal kurz auf Postgres geschielt).
Nun wollt ich etwas mit MySQL spielen, aber stoße recht schnell auf Schwierigkeiten. Einfache kleine Abfragen, gehen entweder gar nicht (#1) oder müssen nach Stunden (!) (#2) abgebrochen werden.

#1

Code: Alles auswählen

 delete from a where a.id in (select id from a where ...)
Hier kommt sinngemäß die Meldung, daß ich nicht von der selben Tabelle löschen kann, von der ich auch 'select'e.

Das ganze ist nur zum Spielen, nichts wichtiges, daher hab ich einfach schnell die betreffenden IDs in eine Tabelle t eingefügt und mach dann:
#2

Code: Alles auswählen

delete from a where id in (select id from t) 
Das läuft nun im Prnzip. Allerdings schon seit Ewigkeiten, der MySQL Prozeß faßt fleißig immer mehr Speicher aus (jetzt bei ~150MB) und die ganze DB ist nicht mehr am Antworten auf andere Anfragen.

Ich sprech hier von wirklich kleinen Datenmengen. Die gesamte DB ist nur ~ 8MB goß, in t sind ~ 70.000 Zeilen.

Genutzt hab ich die 'default' Tabellen, also ohne Transaktionsschutz.

Ist das normal? Wie umgehe ich das mit MySQL?
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 06.10.2005 17:26:59

Wenn du anspruchsvolleres machen willst, nimm Postgresql, Mysql ist leider - immer noch - zu beschraenkt in bestimmten Bereichen oder du musst teils explizit InnoDB-Tabellen anlegen um bestimmte Features nutzen zu koennen.
In Postgresql waeren beide Kommandos auf jeden Fall ohne Problem durchgelaufen.

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 06.10.2005 19:32:44

Danke, ich fürchtete schon gar keine Antwort mehr zu bekommen. Auf Postgres (was mich eigentlich interessiert) wollt ich eigentlich verzichten, da das mal auf einem recht kleinem Rechner laufen soll und MySQL für andere Sachen eh schon dort drauf ist.

Du meinst mit anderen Tabellentypen würden solche Sachen eventuell (besser) funktionieren? Es muß doch auch irgendwie mit MySQl zu machen sein, diesem Forum hier hat ja nun definitiv größere Datenmengen und Abfragen zu bewältigen.

Danke, Bert
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 06.10.2005 19:59:30

hallo,

nur ein vorschlag, nicht ausprobiert ... ;)

DELETE FROM a INNER JOIN t ON a.id = t.id;
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 06.10.2005 21:23:10

Puh, also ich weiss noch, dass z.B. verschachtelte Selects noch nicht allzulange bei mysql ueberhaupt moeglich sind. Was die Tabellentypen angeht, muesstest du selber mal in der Doku nachlesen.
Generell find ich aber Postgres um einiges maechtiger als Mysql.

Benutzeravatar
mauser
Beiträge: 1854
Registriert: 27.01.2005 22:34:48

Beitrag von mauser » 17.10.2005 20:58:52

hi,

da ich mich grad selber damit rumplage, möchte ich es mal genauer machen,vll. stolpert ja noch jemand über das "problem": subselects gibts erst seit mysql 4.1 , davor noch net..
mfg
mauser

Antworten