baeckerman83: MYSQL Explain - indexes?

Ich habe diese Ausgabe wenn ich ein Explain auf mein select mache. Ist diese erste Zeile jetzt ein Zeichen, dass ein Index fehlt?

  1. Tach,

    Ich habe diese Ausgabe wenn ich ein Explain auf mein select mache. Ist diese erste Zeile jetzt ein Zeichen, dass ein Index fehlt?

    ja, Anzeichen dafür sind z.B.: key=NULL, type=ALL, Extra~=Using filesort: MySQL Explain

    mfg
    Woodfighter

    1. Oh dann muss ich mal schauen was da ist. So ganz habe ich das Explain noch nicht verstanden. Zeigt es mir den nauch an welche Spalte betroffen ist?

      Tach,

      Ich habe diese Ausgabe wenn ich ein Explain auf mein select mache. Ist diese erste Zeile jetzt ein Zeichen, dass ein Index fehlt?

      ja, Anzeichen dafür sind z.B.: key=NULL, type=ALL, Extra~=Using filesort: MySQL Explain

      mfg
      Woodfighter

      1. Sorry noch eine Frage, macht ein unique keinen Index?

        1. Tach,

          Sorry noch eine Frage, macht ein unique keinen Index?

          doch, der wird ja auch als potentieller Index angezeigt.

          mfg
          Woodfighter

          1. Tach,

            Sorry noch eine Frage, macht ein unique keinen Index?

            doch, der wird ja auch als potentieller Index angezeigt.

            mfg
            Woodfighter

            Danke für eure ganzen Antworten. Das heißt, es ist ein Index da, dieser wird aber nicht verwendet, weil er nicht mehr dazu führt, dass die Anfrage schneller abläuft? Dann kann ich mal alle Anfragen nach schauen und prüfen ob diese alle so aussehen oder noch mehr nulls da sind.

            1. Tach!

              Das heißt, es ist ein Index da, dieser wird aber nicht verwendet, weil er nicht mehr dazu führt, dass die Anfrage schneller abläuft?

              Ja. Es kann aber gut möglich sein, dass sich ein Index aufsetzen lässt, der dir weiterhilft. Nur sagt dir EXPLAIN nicht, was ihm was nützen würde, sondern nur was es an vorhandenem nimmt oder eben nicht.

              dedlfix.

      2. Tach,

        Oh dann muss ich mal schauen was da ist. So ganz habe ich das Explain noch nicht verstanden. Zeigt es mir den nauch an welche Spalte betroffen ist?

        nö, es zeigt an, welche Indizes da sind, und welche genutzt wurden. Deine Abfrage ist ja nur teilweise auf dem Screenshot, aber ich vermute mal dein Index wird die Spalte vorhersage_aktiv eher nicht umfassen. Als Faustregel möchtest man einen Index haben, der alle Spalten in der Reihenfolge wie sie im Statement nach dem Tabellennamen vorkommen von links nach rechts umfasst.

        mfg
        Woodfighter

        1. Tach!

          Als Faustregel möchtest man einen Index haben, der alle Spalten in der Reihenfolge wie sie im Statement nach dem Tabellennamen vorkommen von links nach rechts umfasst.

          MySQL nimmt den Index, mit dem sich die kleinste Datenmenge finden lässt. Weitere Indexe werden nur genutzt, wenn damit ebenfalls noch eine bedeutende Einschränkung erreicht werden kann. Bleiben nach dem ersten Index noch wenige Datensätze übrig, auf die noch eine weitere Bedingung anzuwenden ist, bringt ein weiterer Index keinen Vorteil mehr und wird nicht verwendet. Ich hatte das mal vor einiger Zeit untersucht.

          dedlfix.

          1. Tach,

            Als Faustregel möchtest man einen Index haben, der alle Spalten in der Reihenfolge wie sie im Statement nach dem Tabellennamen vorkommen von links nach rechts umfasst.

            MySQL nimmt den Index, mit dem sich die kleinste Datenmenge finden lässt. Weitere Indexe werden nur genutzt, wenn damit ebenfalls noch eine bedeutende Einschränkung erreicht werden kann. Bleiben nach dem ersten Index noch wenige Datensätze übrig, auf die noch eine weitere Bedingung anzuwenden ist, bringt ein weiterer Index keinen Vorteil mehr und wird nicht verwendet. Ich hatte das mal vor einiger Zeit untersucht.

            jo, klingt logisch. _Ein_ Index über alle genutzten Spalten (also Bedingungen und Sortierreihenfolge) sollte allerdings noch besser sein.

            mfg
            Woodfighter