Erkläre bitte, warum das Hinzufügen weiterer Indizes zu einer relationalen Datenbank nicht immer zur Beschleunigung der Arbeitslast beiträgt.
Please explain why adding more indexes to a relational database is not always beneficial for speeding up workloads.
At a high level, an index over a specific table can speed up the execution of a query that accesses the table provided that the query references a compatible subset of columns that the index covers and that the cost of using the index is lower than alternatives (e.g., simply scanning the whole table or using another index). At the same time, the index needs to be kept up-to-date with the table, which means that each table update (insertion or deletion of new rows, or updates to existing rows for the columns that the index covers) will now cost more as the relational database system has to also propagate the update to the index. Thus, the usefulness of adding an index to a workload will depend on the fraction of queries that can benefit from the index, and on the mix of queries and updates.
Auf einer hohen Ebene kann ein Index über eine bestimmte Tabelle die Ausführung einer Abfrage beschleunigen, die auf die Tabelle zugreift, vorausgesetzt, die Abfrage bezieht sich auf eine kompatible Teilmenge von Spalten, die der Index abdeckt, und die Kosten für die Verwendung des Index sind niedriger als die Alternativen (z. B. einfaches Scannen der gesamten Tabelle oder Verwendung eines anderen Index). Gleichzeitig muss der Index mit der Tabelle auf dem neuesten Stand gehalten werden, was bedeutet, dass jede Tabellenaktualisierung (Einfügen oder Löschen neuer Zeilen oder Aktualisieren bestehender Zeilen für die Spalten, die der Index abdeckt) nun mehr kostet, da das relationale Datenbanksystem die Aktualisierung auch an den Index weitergeben muss. Wie sinnvoll es ist, einen Index zu einer Arbeitslast hinzuzufügen, hängt also von dem Anteil der Abfragen ab, die von dem Index profitieren können, sowie von der Mischung aus Abfragen und Aktualisierungen.
general_qa
de