Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Wie lange dauert es, einen Index zu erstellen?

Es gibt ein paar Faktoren zu berücksichtigen:

  • Sortieren ist eine N.log(N)-Operation.
  • Die Sortierung für 14 Millionen Zeilen könnte gut in den Hauptspeicher passen; bei der Sortierung mit 500 M Zeilen ist dies wahrscheinlich nicht der Fall, sodass die Sortierung auf die Festplatte überläuft, was die Dinge enorm verlangsamt.

Da der Faktor ungefähr 30 groß ist, wäre die nominelle Sortierzeit für den großen Datensatz in der Größenordnung von 50 Mal so lang – weniger als zwei Stunden. Sie benötigen jedoch 8 Bytes pro Datenwert und etwa weitere 8 Bytes Overhead (das ist eine Vermutung - stimmen Sie auf mySQL ab, wenn Sie mehr darüber wissen, was es in einem Index speichert). Also 14M × 16 ≈ 220 MB Hauptspeicher. Aber 500M × 16 ≈ 8 GB Hauptspeicher. Wenn Ihre Maschine nicht so viel Speicher übrig hat (und MySQL dafür konfiguriert ist, ihn zu verwenden), dann wird die große Menge auf die Festplatte verschüttet, und das macht einen Großteil der restlichen Zeit aus.