Je vois constamment des gens disent que les indices ralentissent update
, delete
et insert
. Ceci est utilisé comme une instruction générale, comme s'il s'agissait d'un absolu.
Tout en ajustant ma base de données pour améliorer les performances, je continue de rencontrer cette situation qui semble contredire logiquement cette règle pour moi, et nulle part je ne peux trouver quelqu'un dire ou expliquer de quelque manière que ce soit autrement.
Dans SQL Server, et je pense / présume la plupart des autres SGBD, vos index sont créés en fonction des colonnes spécifiques que vous spécifiez. Les insertions et les suppressions affecteront toujours une ligne entière, il n'y a donc aucun moyen qu'elles n'affectent pas l'index, mais les mises à jour semblent un peu plus uniques, elles peuvent spécifiquement affecter uniquement certaines colonnes.
Si j'ai des colonnes qui ne sont incluses dans aucun index et que je les mets à jour, sont-elles ralenties simplement parce que j'ai un index sur d'autres colonnes de cette table?
Par exemple, disons dans ma User
table que j'ai un ou deux index, la clé primaire qui est une colonne Identity / Auto Increment, et éventuellement une autre sur une colonne de clé étrangère.
Si je mets à jour une colonne sans l'index directement dessus, comme par exemple leur numéro de téléphone ou leur adresse, cette mise à jour est-elle ralentie parce que j'ai des index sur cette table sur d'autres colonnes dans les deux situations? Les colonnes que je mets à jour ne sont pas dans des index, donc logiquement, les index ne devraient pas être mis à jour, n'est-ce pas? Si quoi que ce soit, je pense qu'ils sont accélérés si j'utilise les index de la clause WHERE.
so there is no way they will not affect the index
sauf pour les index filtrés ...