...tausend bunte Antworten:
Cut and Paste meint: Datensätze auslesen, zwischenspeichern, wieder reinschreiben. Wenn ich einfach nur ein UPDATE mache, dann bleibt der Datensatz ja an der Position in der Tabelle.
Ein SELECT ist nicht ressourcenfressend, jedoch ein ORDER BY! Da muss ja jeder Datensatz mit anderen verglichen werden und sortiert werden. Bei großen Datenbanken ist das eine unnötige Belastung, wenn es auch anders ginge, aber das weiß ich eben nicht, ob ich mich auf die interne Indizierung so verlassen kann, da ich nicht weiß, wie diese funktioniert.
Deine Frage zu ID und Parent_ID:
Ich erkläre es mal ganz von vorne:
Mit ID und Parent_ID strukturiere ich meine Datensätze, ähnlich, wie es in einem Dateimanagement-System Verzeichnisse (oder Ordner bei Win) und einfache Dateien gibt:
Jeder Datensatz hat eine ID und hat in der Parent_ID die ID des direkt übergeortneten Datensatzes, der dann eben ein Verzeichnis ist. Nun ist es aber für mich ziemlich unübersichtlich mit diesen ID's zu arbeiten, da über mein CMS mehrere Domains angeschlossen sind mit unteschiedlichen Seitenstrukturtabellen. D.h. ein Forum-Modul würde von der einen Domain aus mit der ID=20 angesrochen werden, von der anderen mit ID=5. Deshalb und aus anderen Gründen existiert zu jeder ID auch ein eindeutiger Name (im Beispiel: forum). Nun existiert also eine Seitenstrukturtabelle:
1:
2:
3:
4:
5:
6:
7: |
| id | p_id | name | ...
| 1 | 0 | startseite | ...
| 2 | 1 | austausch
| 3 | 2 | forum
| 4 | 2 | online_council
|
Das ganze soll aber so aussehen:
1:
2:
3:
4:
5:
6:
7: |
| name | p_name | ...
| startseite | NULL
| austausch | startseite
| forum | austausch
| online_council | austausch
|
comprendes?
Nun müssen halt aber z.B. forum und online-council in einer bestimmten Reihenfolge erscheinen, so dass im Menu nachher (das besteht aus Registerkartenreitern) also entweder [ forum ] [ online_council ] oder eben in umgekehrter Reihenfolge erscheint. Hier kann ich nicht mehr mit ORDER BY arbeiten (alphabetisch solls ja nicht sortiert sein) und ich möchte aber auch keine Neue Objekteigenschaft einführen (ORDER BY reihenfolge). Wenn ich jezt aber den Datensatz 'forum' lösche und neu anlege, dann liegt er in der internen MySQL-Indizierung am Ende der Tabelle, also hinter 'online_council' und genau das würde ich gerne nutzen!
Ich hoffe, das jetzt klar ist, was ich meine.
Basti
---
...