Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - combien de temps pour créer un index ?

Il y a quelques facteurs à considérer :

  • Le tri est une opération N.log(N).
  • Le tri de 14 M de lignes peut très bien tenir dans la mémoire principale ; le tri avec 500 millions de lignes ne le fait probablement pas, donc le tri se répand sur le disque, ce qui ralentit énormément les choses.

Étant donné que le facteur a une taille d'environ 30, le temps de tri nominal pour l'ensemble de données volumineuses serait de l'ordre de 50 fois plus long - moins de deux heures. Cependant, vous avez besoin de 8 octets par valeur de données et d'environ 8 octets supplémentaires de surcharge (c'est une supposition - réglez mySQL si vous en savez plus sur ce qu'il stocke dans un index). Donc, 14M × 16 ≈ 220 Mo de mémoire principale. Mais 500M × 16 ≈ 8 Go de mémoire principale. À moins que votre machine n'ait autant de mémoire à épargner (et que MySQL soit configuré pour l'utiliser), alors le gros tri se répand sur le disque et cela représente une grande partie du reste du temps.