Question

Quand je lance une instruction select mysql, il prend beaucoup de temps parce que je l'ai déjà précédemment supprimé un très grand nombre de lignes.

Est-il possible de la table pour lancer la numérisation à partir du bas, par opposition à partir du haut?

Était-ce utile?

La solution

Une requête ne balaye pas la table dans un ordre particulier; il peut le faire si elle arrive à traverser un indice particulier dans l'ordre (par exemple une plage de balayage), qui peut-être parce que vous avez utilisé une clause ORDER BY.

Les bases de données ne fonctionnent pas comme ça. Vous ne pouvez pas compter sur leur comportement de cette façon.

Si vous faites un scan de table, attendez-vous à prendre un certain temps, surtout si vous avez supprimé beaucoup de lignes récemment. Cependant, il faudra encore plus longtemps si vous avez beaucoup de lignes.

Assurez-vous que la requête utilise des index à la place. REGARDE l'expliquer le plan et assurez-vous qu'il utilise des index.

Autres conseils

Peut-être que vous avez besoin d'un indice supplémentaire pour votre table. Il ne fait pas de mal à émettre OPTIMIZE TABLE et ANALYZE TABLE de temps en temps. Les performances des requêtes ne devrait pas être affectée par les lignes supprimées ayant, même un grand nombre de lignes, à condition que vous avez des index appropriés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top