sql >> Databáze >  >> RDS >> Mysql

MySQL používá řazení souborů na indexovaném sloupci TIMESTAMP

V tomto případě MySQL nepoužívá váš index pro třídění a je to DOBRÉ. Proč? Vaše tabulka obsahuje jen 64 000 řádků, průměrná šířka řádku je asi 26 bajtů (pokud jsem správně přidal velikosti sloupců), takže celková velikost tabulky na disku by měla být kolem 2 MB. Načíst pouhé 2 MB dat z disku do paměti je velmi levné (pravděpodobně během pouhých 1-2 diskových operací nebo hledání) a poté jednoduše proveďte třídění souborů v paměti (pravděpodobně varianta rychlého třídění).

Pokud by MySQL provádělo načítání podle pořadí indexů, jak si přejete, muselo by provést 64 000 operací vyhledávání disku, jeden záznam za druhým! Bylo by to velmi, velmi pomalé.

Indexy mohou být dobré, když je můžete použít k rychlému přeskočení na známé místo v obrovském souboru a čtení jen malého množství dat, jako v klauzuli WHERE. Ale v tomto případě to není dobrý nápad – a MySQL není hloupé!

Pokud by byla vaše tabulka velmi velká (více než velikost RAM), pak by MySQL určitě začala používat váš index – a to je také dobrá věc.



  1. Alternativa k FIND_IN_SET v SQLite?

  2. Přidání tabulky s FOREIGN KEY do databáze MySQL způsobí chybu 150

  3. Automatizace Načítání čísla verze ze souborů .Dtsx

  4. SQL Server:Jak mohu seskupit více hodnot řádků do samostatných sloupců?