Was sind Indizes für, was sie sind in der Datenbank?
Ohne Index auf Spalte user_name
System müsste die gesamte Tabelle Example
Zeile für Zeile durchsuchen, um alle übereinstimmenden Einträge zu finden. Wenn die Datenverteilung in einer bestimmten Tabelle darauf hinweist, dass es nur wenige Zeilen gibt, ist dies eindeutig ein ineffizienter Weg, diese Zeilen zu erhalten.
Wenn Sie jedoch Indizes verwenden, leiten Sie die Suchleistung in eine andere Baumstruktur um, die schnellere Suchvorgänge und eine sehr geringe Tiefe bietet.
Bitte beachten Sie, dass Indizes reine Redundanz sind. Datenbank-Index ist wie ein Telefonbuch oder ein anderer Index in einem Buch, das Sie bereit sind zu lesen (wahrscheinlich ein Teil von, um schnell zu finden, was Sie suchen).
Wenn Sie an einem Kapitel eines Buches interessiert sind, können Sie den Index relativ schnell finden, so dass Sie nicht viele Seiten durchblättern müssen, um es zu bekommen.
Warum werden keine Indizes standardmäßig erstellt?
Index ist eine Datenstruktur, die neben einer Tabelle erstellt wird und sich bei jeder Änderung einer Tabelle selbst verwaltet. Die Tatsache seiner Existenz impliziert die Nutzung des Datenspeichers.
Wenn Sie jede Spalte in einer großen Tabelle indizieren würden, würde der Speicher, der zum Beibehalten von Indizes benötigt wird, die Größe der Tabelle bei weitem überschreiten.
Die Selbsterhaltung einer Indexstruktur bedeutet auch, dass bei einer UPDATE, INSERT, DELETE
der Index aktualisiert werden muss und dass Zeit kostet.
Es gibt Situationen, in denen Sie den größten Teil der Tabelle oder die gesamte Tabelle abrufen müssen. In diesem Fall wäre der Sequenz-Scan der gesamten Tabelle effizienter als die Traversierungs- und Blattknoten-Kette.
Verwandte Frage, möglicherweise duplizieren: http://StackOverflow.com/Questions/5696897/what-are-the-biggest-benefits-of-using-Indexes-in-mysql – TZHX
Indizes sind nicht frei. Sie müssen erstellt und aktualisiert werden, sodass Einfügungen und Aktualisierungen langsamer sind. – Marvin
versuchen Sie, die gleiche Frage hier zu stellen: https://dba.stackexchange.com/help/on-topic – chharvey