PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Index-Problem


MySqlPro
03.06.2009, 20:59:54
Hi Community,

ich hab folgendes Problem:

Tabelle: "Daten"

ID Kunde
1 Max
2 Mirie
3 Heinz
4 Moritz
..
..

nun möchte ich, dass wenn eine Zeile gelöscht wird, sagen wir mal ID 2 Mirie, dass dann die ID's neu vergeben werden.

Also:
ID Kunde
1 Max
2 Heinz
3 Moritz
..
..

Ich weiß leider nicht wie das funktioniert. Ich hoffe ihr könnt mir helfen ;)
Danke!

Lg MySqlPro

vt1816
03.06.2009, 22:44:24
Hallo und willkommen hier im Forum!

[...]
nun möchte ich, dass wenn eine Zeile gelöscht wird, sagen wir mal ID 2 Mirie, dass dann die ID's neu vergeben werden.
[...]

Ich weiß leider nicht wie das funktioniert. Ich hoffe ihr könnt mir helfen ;)
Danke!

Lg MySqlPro

Leider steht Dein Nick in keinem guten Verhältnis zu Deinem Wissen bzgl. MySQL.
Denn sonst würdest Du nicht eine solche Frage stellen. Hast Du Dir mal überlegt wofür die ID eigentlich da ist?

Wozu willst Du sie wieder neu belegen?

Damir
03.06.2009, 23:51:06
Also ID's in MySQL haben Ihren Sinn und Zweck - sie sollen eindeutig sein und sicherlich nicht immer wieder neu geordnet werden (was auch kein Sinn macht). Ausserdem wäre der Aufwand dafür sehr hoch und auch fehlerträchtig..

Anhand von solchen ID's kannst Du Beziehungen zu anderen Tabellen herstellen, daher las es so wie es ist....

Wenn Du schon irgendetwas ändern möchtest, dann lege doch eine zusätzliches Feld für die Reihenfolge (wie auch immer du das nennen willst) an oder aber eine neue Tabelle mit der Reihenfolge (und hier kommt auch die eindeutige ID zum Zuge ;-). Die neue Tabelle kannst du dann nach jeder Änderung einfach löschen und wieder neu schreiben...

Allerdings, ich wüsst jetzt wirklich nicht wofür Du sowas braucht.....

Damir

DokuLeseHemmung
04.06.2009, 00:24:10
Eine ID, welche wechselt ist keine ID mehr!
Also kann man sie ganz entspannt weglassen und ist damit auch sofort diese irrationale Sorge um die Lücken los.

Damir
04.06.2009, 08:00:03
Eine ID, welche wechselt ist keine ID mehr!
Also kann man sie ganz entspannt weglassen und ist damit auch sofort diese irrationale Sorge um die Lücken los.

Genau, und dann hat man 150.000 Einträge in der Tabelle und wundert sich das jede Abfrage 10 Sekunden dauert... ;-)

Also ich würde sie nicht weglassen...

MySqlPro
04.06.2009, 08:24:06
Also schonmal danke für Eure Rückmeldungen! Ich wollte das so machen, da ich immer die letzte ID auslesen wollte um zu wissen wieviele Zeilen es gibt. Aber ich lass jetzt einfach die ID so wie sie ist.

Damir
04.06.2009, 08:25:52
Also schonmal danke für Eure Rückmeldungen! Ich wollte das so machen, da ich immer die letzte ID auslesen wollte um zu wissen wieviele Zeilen es gibt. Aber ich lass jetzt einfach die ID so wie sie ist.

Eine sehr weise Entscheidung so früh am morgen ;-)

DokuLeseHemmung
04.06.2009, 09:37:22
Genau, und dann hat man 150.000 Einträge in der Tabelle und wundert sich das jede Abfrage 10 Sekunden dauert... ;-)

Also ich würde sie nicht weglassen...

Habe ich gesagt: "Index weg lassen?"
Nein!

Welchen Performancenachteil soll es haben, den Kundenbezeichner als PrimaryKey zu verwenden?
Keinen! Warum auch?

Indyk
04.06.2009, 09:41:14
da ich immer die letzte ID auslesen wollte um zu wissen wieviele Zeilen es gibt.

SELECT COUNT(id) AS anzahl FROM tabelle

Damir
04.06.2009, 09:46:51
Habe ich gesagt: "Index weg lassen?"
Nein!

Naja, ich hatte angenommen und so habe ich es verstanden, das er den Index neu schreiben will... also wenn ich da was überlesen habe, sorry;-)

DokuLeseHemmung
04.06.2009, 13:15:04
das er den Index neu schreiben will...
Das wäre als sekundär Erscheinung auch passiert.

Aber bei ihm drehte es sich wohl nur um die "unschönen" Lücken.