mySQL: Index richtig setzen

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

  • mySQL: Index richtig setzen

    Hallo,

    Ich habe eine Tabelle mit etwa 30.000 Datensätzen und möchte die neuesten 6 Einträge ausgeben. Ich teste die Abfrage gerade auf einer Entwicklungsumgebung um das ganze so schnell wie möglich zu machen.

    Meine Frage ist nun, ob folgende Abfrage eigentlich die beste/schnellste ist um die neuesten 6 Einträge zu erhalten, bzw. welcher mySQL Spalten-Index am sinnvollsten ist.

    Zur Zeit wird bei dieser Abfrage kein Index verwendet, was wohl auch der Grund fürs Schneckentempo sein dürfte.

    Ist ein Index auf die Spalte "Gespeichertamum" sinnvoll, wenn alle Werte unterschiedlich sind? Ein Index auf Spalten mit < 10 unterschiedlichen Werten (Bsp.: Spalte "Typ") dürfte wohl auch nicht sinnvoll sein, oder?

    PHP-Code:
     SELECT IDKategorieTitelFotoURL_400Gespeichertamum
    FROM tabelle
    WHERE FotoURL_400 
    != ''
    AND Ausblenden ''
    AND Typ 'Typ1'
    ORDER BY Gespeichertamum DESC 
    LIMIT 0 

    Danke für die Hilfe!
    Max

  • #2
    Hallo Max,

    Indizes sind für alle Spalten sinnvoll, die für die Auswahl von Datensätzen geprüft werden müssen. Wenn du wie in deinem Beispiel also Spalten in der Where-Klausel hast, gehört da auch jeweils ein Index drauf. Gespeichertamum braucht in diesem Falle keinen, da es keine Auswahlspalte sondern nur eine Sortierspalte ist.

    Bei Joins gehören Indizes auch auf die Spalten, die mit using oder on verglichen werden.

    Ausnahme: Textfelder (auch wenn sie in der Where-Klausel auftauchen) bekommen normalerweise keinen Index oder nur einen mit begrenzter Länge (z. B. 3 für die ersten drei Buchstaben eines Nachnamens)

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar

    Lädt...
    X