sql >> Databasteknik >  >> RDS >> Mysql

MySQL - hur länge ska man skapa ett index?

Det finns ett par faktorer att ta hänsyn till:

  • Sortering är en N.log(N)-operation.
  • Sorteringen för 14M rader kan mycket väl passa i huvudminnet; sorteringen med 500 miljoner rader gör det förmodligen inte, så sorteringen rinner ut på disken, vilket saktar ner saker och ting enormt.

Eftersom faktorn är cirka 30 i storlek, skulle den nominella sorteringstiden för den stora datamängden vara i storleksordningen 50 gånger så lång - under två timmar. Du behöver dock 8 byte per datavärde och ytterligare 8 byte av overhead (det är en gissning - ställ in på mySQL om du vet mer om vad den lagrar i ett index). Så, 14M × 16 ≈ 220 MB huvudminne. Men 500M × 16 ≈ 8 GB huvudminne. Om inte din maskin har så mycket minne över (och MySQL är konfigurerat för att använda det), så spills den stora sorten till disken och det står för mycket av resten av tiden.



  1. SQL Views:Hur arbetar man med Views i SQL?

  2. MySQL CURRENT_TIMESTAMP vid skapande och vid uppdatering

  3. Ändra materialiserad vyfråga

  4. Oändlig loop CTE med OPTION (maxrekursion 0)