2010-03-21 5 views
4

J'utilise cette requête SQL pour créer un index:Comment et quand mettre à jour un index MySQL?

$query = "CREATE INDEX id_index2 
      ON countries(geoname_id, name)"; 

Comment puis-je mettre à jour l'index lorsque de nouvelles entrées sont ajoutées?

Dois-je exécuter un script PHP avec la requête de mise à jour dans CRON et l'exécuter tous les soirs?

Est-ce la meilleure pratique pour la mise à jour automatique d'index?

Répondre

9

Les index sont automatiquement mis à jour par MySQL lorsque vous insérez/mettez à jour des lignes. (Cela peut être un batteur de performance pour les sites Web énormes, mais vous n'en utilisez probablement pas un énorme :).) Vous n'avez rien à faire après la création initiale.

+0

mais quand mon site devient plus grand, et qu'il devient "laggy", comment puis-je faire? mises à jour automatisées réactives et mise à jour manuellement? supprimer l'index, puis en créer un nouveau? –

+0

Attendez jusqu'à ce qu'il soit démontré (mesurable) un problème. Ce ne sera probablement pas un problème. Si vous êtes inquiet, gardez un œil sur si vous utilisez le moteur de stockage le plus performant et essayez de minimiser le code spécifique au SGBD dans votre application afin qu'il soit facile de passer à un SGBD alternatif si cela s'avère nécessaire. Reconstruire des index à partir de zéro sera beaucoup plus lent que de les conserver en utilisation normale - ne pensez même pas à supprimer l'index et à en créer un nouveau sauf in extremis. –

+0

Les pays ne changent pas très souvent, en moyenne. Si vous avez beaucoup de valeurs "geoname_id" et que vous déterminez le pays dans lequel elles se trouvent, vous pourriez avoir plus de trafic. Cependant, à moins de savoir que l'indexation MySQL est pire que le SGBD moyen (ce dont je doute), ne vous inquiétez pas, laissez MySQL faire son travail. –

2

Il sera automatiquement mis à jour après l'ajout de lignes, pas besoin d'exécuter des instructions de mise à jour.

Questions connexes