Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL używa sortowania plików w indeksowanej kolumnie TIMESTAMP

W tym przypadku MySQL nie używa twojego indeksu do sortowania i jest to DOBRA rzecz. Dlaczego? Twoja tabela zawiera tylko 64k wierszy, średnia szerokość wiersza to około 26 bajtów (jeśli dodałem odpowiednie rozmiary kolumn), więc całkowity rozmiar tabeli na dysku powinien wynosić około 2 MB. Bardzo tanie jest wczytanie tylko 2 MB danych z dysku do pamięci (prawdopodobnie w zaledwie 1-2 operacjach dyskowych lub wyszukiwaniach), a następnie po prostu wykonaj sortowanie plików w pamięci (prawdopodobnie odmiana sortowania szybkiego).

Jeśli MySQL pobierałby według kolejności indeksów, jak sobie życzysz, musiałby wykonać 64000 operacji wyszukiwania dysku, jeden rekord po drugim! Byłoby to bardzo, bardzo powolne.

Indeksy mogą być dobre, gdy można ich użyć do szybkiego przeskoczenia do znanej lokalizacji w dużym pliku i odczytania tylko niewielkiej ilości danych, jak w klauzuli WHERE. Ale w tym przypadku to nie jest dobry pomysł - a MySQL nie jest głupi!

Jeśli twoja tabela byłaby bardzo duża (więcej niż rozmiar pamięci RAM), MySQL z pewnością zacząłby używać twojego indeksu - i to również jest dobre.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATE_SUB() Przykłady – MySQL

  2. Klucz obcy MySQL, aby umożliwić NULL?

  3. wysyłanie użytkownikowi wiadomości poprzez przekazanie jego identyfikatora do pola modalnego

  4. Jakiś powód klauzuli GROUP BY bez funkcji agregacji?

  5. Dlaczego ten kod pdo::mysql ulega awarii w systemie Windows?