Hans Gustav: Index für MySql spalte

Hallo,

wieso wird die datenbank durch einen index schneller?

was kann das für ein problem sein wenn ich über webmin folgenden sql-code eingebe:

CREATE INDEX blabla ON kundendaten (ORT)

? und ich nur ein failed als meldung bekomme, was ist falsch?

MfG
Hans Gustav

  1. Hi Hans Gustav,

    CREATE INDEX blabla ON kundendaten (ORT)
    ? und ich nur ein failed als meldung bekomme, was ist falsch?

    Indexe können AFAIK über Integer-Felder sowie auch Varchar-Felder mit maximum 64 Bit gelegt werden. Aber eigentlich lohnt es sich dann schon nicht mehr. Dein Feld ORT ist bestimmt vom Typ varchar und grösser als 64!?
    Indexe können den Datenfluss verbessern aber bei falscher Anwendung auch verschlechtern. Ausserdem machen sie richtig eingesetzt erst bei sehr grossen Datenmengen Sinn.

    ciao
    romy

    1. ich hab jetzt mal ort angeklickt und hab typ geändert auf varchar und am ende kam varchar(255) raus und es geht immer noch nicht vorher wars text. und nu?

      die datenbank ist riessig ich habe eine txt von 80MB drin das sind 500.000 sätze!

      MfG
      Hans Gustav

      1. Hi Hans Gustav,

        ich hab jetzt mal ort angeklickt und hab typ geändert auf varchar und am ende kam varchar(255)

        äh, ich hatte doch geschrieben bis maximal 64 Bit oder?
        varchar(255) sind 255 Bit

        die datenbank ist riessig

        -> das ist aber nicht gut, Risse sollte man vermeiden SCNR ;))

        ich habe eine txt von 80MB drin das sind 500.000 sätze!

        wieso muss der Index unbedingt über den Ort gehen, hast Du kein Id-Feld, welches Du benutzen kannst?
        Welches DBMS benutzt Du eigentlich. Ich würde Dir echt raten, Dich in die Doku einzulesen, wozu Indexe da sind, und was sie bewirken. Man kann damit echt auch einiges kaputt machen. Ausserdem beherrschen AFAIK nicht alle DBMS ide Indexierung.
        bei mysql gibt es zB. das hier:
        http://www.mysql.com/doc/de/CREATE_INDEX.html#IDX1406

        Die Sache mit der Indexierung ist nicht über den Zaun zu brechen. Das sollte man vorher gut planen. Es lassen sich Indexe auch über mehrere Spalten legen etc. Wenn Du einen Geschwindigkeitsvorteil erlangen willst solltest Du erst lesen, dann schreiben.

        Das ist nicht böse gemeint, sonder nur ein gut gemeinter Hinweis.

        ciao
        romy

        1. äh, ich hatte doch geschrieben bis maximal 64 Bit oder?
          varchar(255) sind 255 Bit

          ja ich konnte da aber nix auswählen:

          Field parameters      ########
          Field name            ########
          Data type             #######+ Warning! Changing type may result in data loss
          Allow nulls?          # Yes  # No
          Default value         ########
          Part of primary key?  # Yes  # No

          das feld width gibts erst nach dem ändern von typ text auf varchar und ich denke mal ich beschränke dann die anzahl der zeichen von orts namen die bis zu 30 zeichen lang sind kann ich da 16 als width angeben ohne daten verlust?

          nein ich hab kein id feld kann auch keins machen - vorschrift!
          damit meinst du doch eine spalte (id)oder?

          Welches DBMS benutzt Du eigentlich.

          wasn das?

          MfG
          Hans Gustav

          1. Hi Hans Gustav,

            das feld width gibts erst nach dem ändern von typ text auf varchar und ich denke mal ich beschränke dann die anzahl der zeichen von orts namen die bis zu 30 zeichen lang sind kann ich da 16 als width angeben ohne daten verlust?

            keine Ahnung, kommt auf dein verwendetes Datenbankmanagementsystem an.
            Welches Programm nutzt Du zur Datenbankerstellung? Da muss Dir dann jemand helfen, der dieses kennt.

            nein ich hab kein id feld kann auch keins machen - vorschrift!
            damit meinst du doch eine spalte (id)oder?

            ja , meine ich. Aber Du wirst doch einen Primary Key haben oder, der ist meist günstig  für Indexe.

            Welches DBMS benutzt Du eigentlich.
            wasn das?

            siehe oben
            Datenbankmanagementsystem
            mysql oder MSSQL oder ...

            ciao
            romy

            1. és geht und die db ist auch ein wenig schneller, aber

              ist es besser einen index auf mehrere spalten zu legen oder jeweils ein index für eine spalte? gibt es da bezüge?

              Hans Gustav

              1. Hi Hans Gustav,

                és geht und die db ist auch ein wenig schneller, aber

                schön

                ich habe übrigens gerade mitgekriegt, dass im Title steht, welches DBMS DU benutzt, sorry für die Nachfrage

                ist es besser einen index auf mehrere spalten zu legen oder jeweils ein index für eine spalte? gibt es da bezüge?

                das kann ich Dir leider nicht beantworten, aber ich habe mal den Titel geändert, vielleicht weiss ja jemand anderes mehr.

                ciao
                romy

                1. Hi Romy, Hans Gustav

                  ist es besser einen index auf mehrere spalten zu legen oder jeweils ein index für eine spalte? gibt es da bezüge?
                  das kann ich Dir leider nicht beantworten, aber ich habe mal den Titel geändert, vielleicht weiss ja jemand anderes mehr.

                  Pro Tabelle kann nur ein Index verwendet werden. Wenn also mehrere Felder häufig in Kombination verwendet werden, kann es sich lohnen, über diese zusammen einen Index zu legen weil sonst nur für ein Feld ein Index benutzt werden kann.

                  Dieser Index kann auch für Abfragen über einen Teil der Felder benutzt werden, es müssen aber immer die ersten Felder sein, sobald ein Unterbruch in der Kette da ist, wird von diesem Zeitpunkt an der Index verlassen.

                  Gruss Daniela