Duplicate entry Mysql
simone
- datenbank
0 Frank (no reg)-1 Piere0 Frank (no reg)-3 Piere
0 Simone0 Frank (no reg)-2 Piere
0 Piere
HI,
Hab ein kleines Problem mit 'Duplicate entry'
ich möchte "sinnig" alle doppelten Inhalte aus der Spalte "titel" entfernen.
Problem das die Db eine Größe von 97,2 MB hat.
Ich dachte daran mit:
DELETE DISTINCTROW T1.*, T1.id
FROM buch_titel AS T1
INNER JOIN buch_titel AS T2
ON T1.titel = T2.titel
AND T1.titel = T2.titel
WHERE T1.id>T2.id;
die Einträge zu entfernen. Was bei dieser Größe nicht "sinnig" ist.
Dennoch sollte es ein einfache Möglichkeit geben. (per ALTER oder so..)
Bitte um Hilfe
Danke Simone
DB Struktur:
Feld Typ Attribute Null Standard Extra
id int(9) Nein auto_increment
titel longtext Nein
keyword varchar(255) Nein
Indizes : Name Typ Kardinalität Feld
PRIMARY PRIMARY 600660 id
keyword UNIQUE 600660 keyword
titel INDEX keine titel
Speicherplatzverbrauch : Typ Verbrauch
Daten 43.906 KB
Index 55.646 KB
Insgesamt 99.552 KB
Zeilenstatistik : Angaben Wert
Format dynamisch
Zeilen 600.660
Zeilenlänge ø 74
Zeilengröße ø 170 Bytes
Nächste Autoindex 600.704
Hallo,
ich möchte "sinnig" alle ...
Was bedeutet denn bitte "sinnig" in Bezug auf die Aufgabe?
Zum Bleistift genau einen übrig zu lassen und Duplikate zu löschen?
Willst du das regelmäßig machen oder ist das quasi "einmalige" Aufräumarbeit?
Problem das die Db eine Größe von 97,2 MB hat.
Was ist daran bitte das Problem? In meiner Firma haben wir Datenbanken von 20GB Größe und arbeiten performant damit? Ist es evt. daran, dass du nur 100 MB beim Provider hast?
DELETE DISTINCTROW T1.*, T1.id
FROM buch_titel AS T1
INNER JOIN buch_titel AS T2
ON T1.titel = T2.titel
AND T1.titel = T2.titel
WHERE T1.id>T2.id;
Was tut es, löscht es zuviel, zu wenig, die falschen .... ?
Was bei dieser Größe nicht "sinnig" ist.
Was hat das "sinnig" denn mit der Größe zu tun?
Speicherplatzverbrauch : Typ Verbrauch
Daten 43.906 KB
Index 55.646 KB
Du verbrauchst mehr Platz für die Indizes als für die reinen Nutzdaten? Ist das bei MySQL üblich oder ein Fehler in deiner DB, oder hast du eine reelle Anwendung dafür? Jedenfalls scheint mir das auf den ersten Blick nicht geheuer.
Ciao, Frank
Hallo,
ich möchte "sinnig" alle ...
Was bedeutet denn bitte "sinnig" in Bezug auf die Aufgabe?
Zum Bleistift genau einen übrig zu lassen und Duplikate zu löschen?Willst du das regelmäßig machen oder ist das quasi "einmalige" Aufräumarbeit?
Diese Fragen stellten sich auch mir, aber klärten sich fast wie von selbst... durch... na, weisst schon wie.
Problem das die Db eine Größe von 97,2 MB hat.
Was ist daran bitte das Problem? In meiner Firma haben wir Datenbanken von 20GB Größe und arbeiten performant damit? Ist es evt. daran, dass du nur 100 MB beim Provider hast?
Geil. Dicke Hose, eh? :))) Deine Firma?
DELETE DISTINCTROW T1.*, T1.id
FROM buch_titel AS T1
INNER JOIN buch_titel AS T2
ON T1.titel = T2.titel
AND T1.titel = T2.titel
WHERE T1.id>T2.id;Was tut es, löscht es zuviel, zu wenig, die falschen .... ?
Der Index damei der Temoprär im RAM angelegt wird explodiert, wenn der SQLServer mit zu geringem KeySpeicher läuft. Ist zb ein Problem bei standardinstallationen von XAMP servern. Aber klar, wirst du nicht kennen, bei richtigen Firmen läuft das ja anders :))
Was bei dieser Größe nicht "sinnig" ist.
Was hat das "sinnig" denn mit der Größe zu tun?
Siehe oben.
Speicherplatzverbrauch : Typ Verbrauch
Daten 43.906 KB
Index 55.646 KBDu verbrauchst mehr Platz für die Indizes als für die reinen Nutzdaten? Ist das bei MySQL üblich oder ein Fehler in deiner DB, oder hast du eine reelle Anwendung dafür? Jedenfalls scheint mir das auf den ersten Blick nicht geheuer.
Das kann zb an nicht optimireten indexes liegen, die mysql nicht selbständig optimiert.
Hallo,
... durch... na, weisst schon wie.
Geil. Dicke Hose, eh? :))) Deine Firma?
bei richtigen Firmen läuft das ja anders :))
Was bist du denn für ein, mit Verlaub, sau-dummer Pedant?
Und nebenbei, was wolltest du eigentlich zum Ausdruck bringen?
Und tschüss,
Frank
Hallo Frank,
Was bist du denn für ein, mit Verlaub, sau-dummer Pedant?
Wenn du wüsstest wie dumm... Aber pedantisch? Ne, nur bei "dicke hose fürs ego" machern. Aber okay, ich weiss dass es Menschen gibt, die das brauchen. Ein guter Freund von mir ist da genauso... ist trotzdem ein guter Freund von mir; wir versuchen halt, uns zu lieben. Keine einfache Sache das.
Und nebenbei, was wolltest du eigentlich zum Ausdruck bringen?
Na Mensch, ich wollte zeigen wie schlau du bist.
Und nebenbei
wollte ich noch aufzeigen dass eine 92 mb grosse tabelle durchaus ein problem sein kann. Hast du das etwa überlesen?
Wirklich, nix für ungut, schamtz und tschüss,
Piere.
Hallo,Frank
....In meiner Firma haben wir Datenbanken von 20GB Größe ....
Hut ab, und das mit mysql und dann noch performant....
.....Du verbrauchst mehr Platz für die Indizes als für die reinen Nutzdaten? Ist das bei MySQL üblich oder ein Fehler in deiner DB, oder hast du eine reelle Anwendung dafür? Jedenfalls scheint mir das auf den ersten Blick nicht geheuer..........
Volltext Suche
Simone
Hallo Simone,
leider hast du keine meiner wichtigeren Fragen beantwortet.
Hast du dein Problem mittlerweile gelöst?
Ciao, Frank
Hallo Frank,
ich machs auch so wehnig sarkastisch wies nur geht, versprochen.
leider hast du keine meiner wichtigeren Fragen beantwortet.
In dem Posting von Simone, das mir vorliegt, hat sie allerdings eine deiner Fragen beantwortet, und zwar die frage nach dem doch recht grossen Speicherverbrauch des Indexes. Und sie antwotete dir wie folgt:
Volltext Suche
Was sicher meint, dass auf dem Feld 'titel' ein volltextindex liegt. Und das macht dann den index sehr gross, das weiss ich aus eigener Erfahrung.
Apropos: Da du ja offensichtlich noch nicht viel mit MySQL zu machen hattest, möchte ich anmerken, dass falls du Fragen haben solltest du dich nicht scheuen brauchts diese auch zu stellen; Ich denke ich kann für alle sprechen wenn ich schreibe: Wir helfen gern. Und wenn dir einer zb zu pendantisch ist, dann versuchs zu ignorieren - jeder hat halt so seine Macken, die man handeln muss ;)
Hast du dein Problem mittlerweile gelöst?
Sieht ganz so aus, aber vllt schreibt Simone ja noch selbst was dazu.
Gruss, Piere.
HI,
Gruss zurück.
Hab ein kleines Problem mit 'Duplicate entry'
ich möchte "sinnig" alle doppelten Inhalte aus der Spalte "titel" entfernen.
Google sagt zwei Möglichkeiten:
CREATE TABLE neuetabelle (titel VARCHAR(255) not null) SELECT DISTINC titel FROM buch_titel;
Legt eine neue Tabelle an und schreibt the titel da rein.
ALTER IGNORE TABLE buch_titel ADD UNIQUE INDEX(titel);
Damit wird UNIQUE INDEX auf titel angelegt, wobei durch IGNORE alle doppelten Einträge bis auf einen (den letzten?) gelöscht werden, damit der index auch wirklich UNIQUE ist. Wobei es dann bei der Struktur der Tabelle ein Problem gibt:
titel longtext Nein
da AFAIK 'longtext' nicht UNIQUE INDEX sein kann. Dann also vorher noch den typ von titel ändern, und zwar so:
ALTER CHANGE TABLE buch_titel titel titel CHAR(255) NOT NULL;
ALTER IGNORE TABLE buch_titel ADD UNIQUE INDEX(titel);
Ich nehme dabei an, dass 255 eine ausreichende Länge für einen Buchtitel ist ;) Auch nehme ich an, dass alle whitespace chars aus den Titeln raus sind... Alle Titel die Länger als 255 Zeichen sind, werden auf 255 Zeichen gekürzt.
Problem das die Db eine Größe von 97,2 MB hat.
Don't try this at home!
:)
@all
Bin jetzt erst vom Feiern Daheim.
Danke Euch
Ich werde mir das erstmal Morgen, ähhhh heute, ansehen.
guten Nacht
und danke Simone
HI Piere,
ALTER CHANGE TABLE buch_titel titel titel CHAR(255) NOT NULL;
ALTER IGNORE TABLE buch_titel ADD UNIQUE INDEX(titel);
So sollte es gehen.
Dank Dir!!!!!!!!!!!!!!!!!!!
und ein schönes Wochenende
Simone