Nie ma gwarancji, że wiersze zostaną zwrócone w określonej kolejności bez ORDER BY
klauzula w zapytaniu.
Rozważ proste zapytanie, które zwraca wszystkie kolumny ze wszystkich wierszy w tabeli. Na przykład:
SELECT * FROM mytable ;
W przypadku tego zapytania prawdopodobnie MySQL wykona pełne skanowanie tabeli, od początku tabeli. Jest więc prawdopodobne, że wiersze zostaną zwrócone w kolejności, w jakiej zostały znalezione w pamięci fizycznej.
Może to z grubsza odpowiadać kolejności wstawiania wierszy, jeśli nie było żadnych usunięć, aktualizacji ani reorganizacji, gdzie miejsce na wstawiony wiersz zostało później odzyskane i ponownie wykorzystane do przechowywania nowo wstawionego wiersza.
Ale to zachowanie NIE jest gwarantowane.
Aby zwrócić wiersze w kolejności, w jakiej zostały wstawione, zapytanie musi określać kolejność, w jakiej wiersze mają być zwracane, poprzez dołączenie ORDER BY
klauzula.
Aby wiersze zostały zwrócone w „kolejności wstawiania”, oznacza to, że zapytanie musi mieć dostęp do tych informacji lub być w stanie je uzyskać. W przypadku prostego zapytania dotyczącego pojedynczej tabeli oznacza to, że informacje muszą być przechowywane w wierszu.