sql >> Base de Datos >  >> RDS >> Mysql

MySQL:¿cuánto tiempo para crear un índice?

Hay un par de factores a considerar:

  • La clasificación es una operación N.log(N).
  • La ordenación de 14 millones de filas bien podría caber en la memoria principal; la ordenación con 500 millones de filas probablemente no lo haga, por lo que la ordenación se derrama en el disco, lo que ralentiza enormemente las cosas.

Dado que el factor tiene un tamaño aproximado de 30, el tiempo de clasificación nominal para el conjunto de datos grandes sería del orden de 50 veces mayor, menos de dos horas. Sin embargo, necesita 8 bytes por valor de datos y alrededor de otros 8 bytes de sobrecarga (eso es una suposición:sintonice mySQL si sabe más sobre lo que almacena en un índice). Entonces, 14M × 16 ≈ 220 MB de memoria principal. Pero 500M × 16 ≈ 8 GB de memoria principal. A menos que su máquina tenga tanta memoria de sobra (y MySQL esté configurado para usarla), entonces la mayor parte se está derramando en el disco y eso representa gran parte del resto del tiempo.