Michael Bauer: dynamischen Index aufbauen

Hallo Miteinander,
ich möchte in einer MySQL-Tabelle einen dynamischen Index aufbauen.
Wenn ich eine Tabelle mit 25 Datensätzen habe und ich beliebige Menge aus diesen Datensätzen lösche (bsp: 4,16,19,20,9 evtl durch eine Abfrage) soll sich eine Routine in Gang setzen, die in einem Feld jedes Datensatzes eine neue fortlaufende Nummer setzt. Auch beim sortieren, einfügen o. ä. soll ein solcher neuer Index aufgebaut werden.
Pseudocode:
gehe alle Datensätze von oben nach unten durch
lösche den Wert aus "index-field" und setze einen Wert um eins größer als im letzten Feld rein. Beim Beginn natürlich 0 oder 1.
Die Autoincrement-Funktion kann ich nicht nehmen. Diese Nummer ist eindeutig dem Datensatz zugeordnet und bildet die Basis für weitere Verknüpfungen.
Der Index wäre in mancherlei Hinsicht nützlich.
Zum Beispiel bei der Begrenzung der Anzahl von anzeigbaren Datensätzen auf einer Seite.

Danke für Eure Hilfe

  1. Hi,

    Wenn ich eine Tabelle mit 25 Datensätzen habe und ich beliebige Menge aus diesen Datensätzen lösche (bsp: 4,16,19,20,9 evtl durch eine Abfrage) soll sich eine Routine in Gang setzen, die in einem Feld jedes Datensatzes eine neue fortlaufende Nummer setzt. Auch beim sortieren, einfügen o. ä. soll ein solcher neuer Index aufgebaut werden.

    es ist _nicht_ sinnvoll, eine Datenbank so etwas speichern zu lassen[1]. Diese Werte werden beim Auslesen oder in der nachfolgenden Programmlogik ermittelt.

    Pseudocode:

    Es steht Dir frei, diesen Pseudocode in Programmlogik umzusetzen, die Du bei Bedarf manuell aufrufst. Die Datenbank wird Dich da nicht unterstützen, denn

    [1] aus genau diesem Grund sieht ein DBMS dafür keine Funktion vor.

    Der Index wäre in mancherlei Hinsicht nützlich.

    In wesentlicher Hinsicht ist er jedoch eine Katastrophe.

    Cheatah

    1. Der Index wäre in mancherlei Hinsicht nützlich.
      In wesentlicher Hinsicht ist er jedoch eine Katastrophe.
      Cheatah

      Hi Cheatah, Michael,

      und eigentlich ist er weder nötig noch sinnvoll noch eigentlich möglich... mal die Verwendung von Customized-Offline-Recordsets außer Acht gelassen, obwohl das da auch keinen Nutzen bringen würde

      Michael, du hast doch bereits einen Index (4,5,6,7) mit jedem Datensatz. Warum brauchst du einen, der bei 0/1 anfängt???
      Während des Ablaufens der Datensätze kannst du doch nebenher einen Zaehler mitlaufen lassen  x = x+1

      Gruß, Frank

  2. Hallo Miteinander,
    ich möchte in einer MySQL-Tabelle einen dynamischen Index aufbauen.
    Wenn ich eine Tabelle mit 25 Datensätzen habe und ich beliebige Menge aus diesen Datensätzen lösche (bsp: 4,16,19,20,9 evtl durch eine Abfrage) soll sich eine Routine in Gang setzen, die in einem Feld jedes Datensatzes eine neue fortlaufende Nummer setzt. Auch beim sortieren, einfügen o. ä. soll ein solcher neuer Index aufgebaut werden.
    Pseudocode:
    gehe alle Datensätze von oben nach unten durch
    lösche den Wert aus "index-field" und setze einen Wert um eins größer als im letzten Feld rein. Beim Beginn natürlich 0 oder 1.
    Die Autoincrement-Funktion kann ich nicht nehmen. Diese Nummer ist eindeutig dem Datensatz zugeordnet und bildet die Basis für weitere Verknüpfungen.
    Der Index wäre in mancherlei Hinsicht nützlich.
    Zum Beispiel bei der Begrenzung der Anzahl von anzeigbaren Datensätzen auf einer Seite.

    Danke für Eure Hilfe

    ->kommt darauf an, wo es angezeigt werden soll,
    die Anzeige der Datensätze wird ja sicherlich nach jedem Löschvorgang neu generiert, d.h. mit pg_numrows (oder so ähnlich, arbeite selber mit postgresql, nicht mit mysql) ermittelst du die anzahl der Datensätze und in der Schleife, die du ja eigentlich haben müsstest um die daten anzuzeigen gibst du einfach das $i mit aus.
    weiss nicht ob ich es richtig verstanden habe
    in die Datenbank diese Zahlen mit zu übernehmen macht keinen sinn, weil jegliche Abfragen ohne diese auskommen, d.h. wenn du nur eine bestimmte anzahl an datensätzen haben willst, meinentwegen nur von 0-10 wird die DB diese dir auch ausgeben, egal was welche id's dort stehen
    hoffe du weisst was ich meine, bin nicht so toll im erklären

    gruss romy