Kann man Tabellen Über-Indexen?!!?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kann man Tabellen Über-Indexen?!!?

    Hola,

    Ich bin durch ein wenig Recherche auf die Möglichkeit der Index-Setzung in MySQL Tabellen gekommen und bin seitdem total begeistert.

    Ich hatte nämlich drei "roh" erstellte Tabellen von denen ich was Wissen wollte. Ein Explain Select ergab dann folgendes:

    Code:
      table ...... rows
        1         31258
        2             1
        3         93956
    Macht - so habe ich gelesen - eine Überprüfung von 2.936.876.648 Zeilen (Alle Zeilen multipliziert)

    Das konnte ich erfolgreich auf

    Code:
      table ...... rows
        1             5
        2             1
        3             1
    runterschrauben, nur mit Hinzufügen von Indexen .. Indizes?

    Meine Frage ist, bevor ich auf die Idee komme wild in der gesamten DB rumzu-indexen, kann das Einbussen bringen? Muss ich auf irgendwas achten?!
    90% Prozent des Problems sitzen vorm PC

  • #2
    Generell ist es immer dann gut, einen Index zu haben, wenn man durch ihn mehr gewinnt als verliert.

    Beispiel: Write only. Eine Logtabelle - wird immer nur mit INSERT gefüttert und einmal im Jahr macht ein Admin ein SELECT *. Gibt es einen Index, muß der bei jedem INSERT angepaßt werden, er zahlt sich aber nie aus, weil das SELECT * ihn gar nicht braucht. Effekt zu 100% negativ.

    Gegenbeispiel: Read only. Eine Tabelle mit geographischen Daten - die Welt ändert sich nicht, es wird also nur gelesen. Dabei profitiert man von einem Index, weil man nie schreibt, muß dieser nie angepaßt werden. Effekt zu 100% positiv.

    In den allermeisten Fällen lohnt sich ein Index. Aber natürlich sollte er immer minimal sein, also nicht einfach "für den Fall" über alle Attribute und auch nicht für jedes Attribut einen. Stichwort functional dependencies.

    Kommentar


    • #3
      Original geschrieben von onemorenerd
      In den allermeisten Fällen lohnt sich ein Index. Aber natürlich sollte er immer minimal sein, also nicht einfach "für den Fall" über alle Attribute und auch nicht für jedes Attribut einen. Stichwort functional dependencies.
      Gut danke, werd ich im Hinterkopf behalten. Wenn ich es mir recht überlege habe ich zwar auch viele Schreibzugriffe, aber ich würde sagen um ein Vielfaches mehr Lesezugriffe. Ergo lohnen sich also diese Indexe für mich.

      Weiss man eigentlich, was das zeitlich so ausmacht, wenn ein Index neu gesetzt werden muss? Gibt es irgendwo Beispieldaten mit und ohne Index und entsprechendem Schreib und/oder Leseverkehr? Würde mich echt interessieren, was das so in (Milli)Sekunden ausmacht oder auch Speichertechnisch (RAM wie HDD)
      90% Prozent des Problems sitzen vorm PC

      Kommentar


      • #4
        Kann man alles messen, aber ist die Mühe nicht wert. Lies einfach mal diese Seite, das sollte reichen.

        Kommentar

        Lädt...
        X