Expliquer pourquoi l'ajout d'index à une base de données relationnelle n'est pas toujours bénéfique pour accélérer les charges de travail.
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.
À un niveau élevé, un index sur une table spécifique peut accélérer l'exécution d'une requête qui accède à la table, à condition que la requête fasse référence à un sous-ensemble compatible de colonnes couvertes par l'index et que le coût de l'utilisation de l'index soit inférieur aux autres solutions (par exemple, l'analyse de la table entière ou l'utilisation d'un autre index). En même temps, l'index doit être maintenu à jour avec la table, ce qui signifie que chaque mise à jour de la table (insertion ou suppression de nouvelles lignes, ou mise à jour de lignes existantes pour les colonnes couvertes par l'index) coûtera désormais plus cher car le système de base de données relationnelle doit également propager la mise à jour à l'index. Ainsi, l'utilité de l'ajout d'un index à une charge de travail dépendra de la fraction des requêtes qui peuvent bénéficier de l'index et de la combinaison des requêtes et des mises à jour.
general_qa
fr