J'ai une table MySQL avec un index couvrant deux champs. Si j'insère de nouvelles lignes dans la table, mon index fonctionnera-t-il toujours? P>
5 Réponses :
oui. Pourriez-vous expliquer plus pourquoi vous pensiez que cela pourrait ne pas? P>
Notez que si vous avez également des index individuels sur un ou les deux champs, MySQL (au moins environ 5,0 versions que j'ai utilisées) n'utilisera pas nécessairement l'index combiné par défaut; En cas de doute, utilisez Expliquez pour vérifier que vos index sont utilisés comme vous attendez. P>
Je ne les ai tout simplement pas utilisés auparavant. Je pensais qu'ils le feraient, mais je voulais être sûr.
Oui, l'index est automatiquement mis à jour; Par conséquent, les indices (index AKA) font des insertions, des mises à jour et supprime plus lentement. P>
Mais le point clé des index (ou des indices) est qu'ils rendent généralement des opérations de sélection plus rapidement. Si l'indice ne fait pas partie de la question plus rapidement, il était préférable d'être présents pour appliquer une contrainte unique de quelque sorte - sinon elle est juste dans la voie et doit être supprimée.
Oui, cela fonctionnera toujours. Les index seraient assez inutiles si vous ne pouviez pas les utiliser après avoir inséré de nouvelles données. Sachez que plus vous ajoutez des données à vos tables, plus vos index augmentent, vous souhaitez donc vous assurer de les créer correctement et de les limiter à ce que vous en avez besoin. P>
J'ai une table MySQL avec un index couvrant deux champs. Si vous insérez de nouvelles lignes dans la table, mon index fonctionnera-t-il toujours? P> blockQuote>
Oui, l'index est mis à jour chaque fois qu'il existe une insertion / mise à jour / Suppression exécutée pour cette table. P>
Comme d'autres ont déclaré, les indices sont mis à jour avec chaque insert. Cela fait partie de la pénalité de performance des insertions et des mises à jour. P>
En réalité, cela n'est pas aussi étrange une question que certains intervenants font allusion. Dans les années 1980, j'ai conçu un système à l'aide d'une SGBDM qui diffèrent des mises à jour "pour la performance" (selon la documentation). Ironiquement, il a été nommé RDM semblait destiné aux mises à jour de la vitesse des humains, de sorte que le report de la base de données écrit jusqu'à ce que plusieurs lignes soient complètes était probablement acceptable. Le système que j'ai conçu utilisé le backend de base de données enveloppé par un serveur de base de données connecté aux sources de données automatiques. Afaik, c'était la première application de RDM s'attendant à ce que des inserts rapides de rangée. L'une des solutions problématiques était l'ingénierie d'un champ d'horodatage afin que tous les nœuds du système puissent dire "Mettez-moi à jour avec tout ce qui a changé depuis AAAAAY-MM-DD HH: MM: SS". Il s'agit que c'était un scénario de mise à jour / rafraîchissement de l'indice de pire des cas, et enfer pour diagnostiquer. Une fois que des appels sans-papiers signifient Trust Me, je veux vraiment que les données rinçues et que les index mises à jour maintenant em> ont été ajoutés, cela fonctionnait plutôt bien. P> RDM code>, à l'origine pour Data Manager EM> (ou quelque chose de très proche de cela), mais une version ultérieure "EM> gestionnaire de données réactif em>. p>
Utile d'avoir un exemple de ce que je me souviens de savoir via HearSay, c'était un problème sur certains systèmes.