Abfragen und Geschwindigleit MySQL PHP
Peter
- datenbank
Hallo,
ich habe eine Frage.
Was läuft schneller bei einer MySQL Datenbank?
Wenn ich in der Datenbank ein ganz langen string packe in denen ganz viele Nummern stehen. Jede Nummer steht für ein Artikel jeder Kunde kann sich seine eigenen Artikel zusammen stellen.
Ich habe nun 2000 Artikel wenn sich der Kunde nun 500 eigene Artikel selber zusammenstellt werden die Nummern in einen String geschrieben getrennt von einem ;
Oder macht es mehr Sinn diese Nummern in jeweilige Übergruppen anzuordnen. Das heißt wenn alle Artikel einer Warengruppe ausgewählt werden dann wird der Artikel String in der Datenbank kürzer aber es kommt eine Artikelgruppennummer in einem anderen Feld dazu.
Die Hauptfrage ist wobei arbeitet die Datenbank schneller wenn ich 5 Vergleichsabfragen auf die Datenbank welche Artikel nun zu welche Warengruppe oder Artiklegruppe gehören oder wenn ich ganz einfach in einem Feld 500 oder 600 Artikelnummer schreibe und ich den strin in einem array verwalte.
Gruß Peter
yo,
Wenn ich in der Datenbank ein ganz langen string packe in denen ganz viele Nummern stehen. Jede Nummer steht für ein Artikel jeder Kunde kann sich seine eigenen Artikel zusammen stellen.
das wäre der alptraum jeder datenbank.
Oder macht es mehr Sinn diese Nummern in jeweilige Übergruppen anzuordnen. Das heißt wenn alle Artikel einer Warengruppe ausgewählt werden dann wird der Artikel String in der Datenbank kürzer aber es kommt eine Artikelgruppennummer in einem anderen Feld dazu.
ich empfehle ein durchdachtes daten-design.
Ilja
yo,
Wenn ich in der Datenbank ein ganz langen string packe in denen ganz viele Nummern stehen. Jede Nummer steht für ein Artikel jeder Kunde kann sich seine eigenen Artikel zusammen stellen.
das wäre der alptraum jeder datenbank.
Oder macht es mehr Sinn diese Nummern in jeweilige Übergruppen anzuordnen. Das heißt wenn alle Artikel einer Warengruppe ausgewählt werden dann wird der Artikel String in der Datenbank kürzer aber es kommt eine Artikelgruppennummer in einem anderen Feld dazu.
ich empfehle ein durchdachtes daten-design.
Ja Du hast recht.
Das mit der String Variante habe ich auch nicht gemacht ich habe mir zuvor gut überlegt was Sinn macht um auch nicht doppelten Datenbestand zu haben.
Nun aufeinmal kam die überlegung ob es alles Mist war was ich gemacht habe und ich es nicht auch einfacher hätte lösen können...?
Hätte schon aber das macht wneig Sinn!!!
Aber ich habe mir nun noch einmal genau meine Datenbankstruktur angeschaut wieso und warum ich das so gemacht habe.
Jetzt weiß ich es wieder und sehe somit die Frage als überflüssig an.
Ja manchmal steht man schon mal auf dem Schlauch das kommt vor ;-)
Danke!
ich habe eine Frage.
Was läuft schneller bei einer MySQL Datenbank?
Ohne zu wissen was eine Normalform ist wirst du sicher Schwierigkeiten haben eine sinnvolle DB struktur zu entwickeln.
Als Ergänzung zu der Antwort von Ilja 2 Links die mir geholfen haben:
http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
http://ffm.junetz.de/members/reeg/DSP/
Struppi.
ich habe eine Frage.
Was läuft schneller bei einer MySQL Datenbank?
Ohne zu wissen was eine Normalform ist wirst du sicher Schwierigkeiten haben eine sinnvolle DB struktur zu entwickeln.
Als Ergänzung zu der Antwort von Ilja 2 Links die mir geholfen haben:
http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
http://ffm.junetz.de/members/reeg/DSP/Struppi.
Ich weiß was eine Normalisierung ist. Nur es ging mir dadrum ich die Datenbank nicht noch flacher hätte machen sollen?
Das heißt meinen Kunden rufe ich über die Kundenummer (Tabelle Kunde)auf der hat seine eigene Warengruppe, Artikelgruppe, Artikel. Wenn alle Artikel aus einer Artikelgruppe ausgewählt werden, wird die Artikelgruppenummer abgespeichert, wenn nur einzelen Artikel dann wird nur die Artikelnummer abgespeichert.
Entweder packe ich das mit in der Tabelle Kunde rein wo ich alle Daten in Feld Warengruppe, Artikelgruppe, Artikel speichere und die wiederum mit ; trenne.
Oder ich arbeite mit Schlüssel und Fremdschlüsseln so das ich in Tabelle Artikel ein Schlüssel auf Kundenartikel setze wo alle Kundennummer drin stehen.
Das heißt beide Varianten haben genausoviele Zugriffe auf die Datenbank.
Das heißt wenn ich nun einen Kunden lösche dann rufe ich die Kundennummer auf und lösche alles was dort drin steht aber wenn ich nun in Tabelle Artikel einen Fremdschlüssel setze und auf Kundenartikel dann muß mysql die komplette Datenbank in Artikel durchsuchen und auch noch den Eintrag löschen. Da macht es doch mehr Sinn die Daten dort abzuspeichern wo der Zugriff kürzer ist.
yo,
habe mir mal dort die normalisierung angeschaut. war recht interessant leider war auch hier wie eigentlich fast überall die erste normalform falsch erklärt.
Ilja