Không có gì đảm bảo rằng các hàng sẽ được trả lại theo bất kỳ thứ tự cụ thể nào mà không có ORDER BY
mệnh đề trong truy vấn.
Hãy xem xét một truy vấn đơn giản trả về tất cả các cột của tất cả các hàng trong một bảng. Ví dụ:
SELECT * FROM mytable ;
Đối với truy vấn đó, có khả năng MySQL sẽ thực hiện quét toàn bộ bảng, từ đầu bảng. Vì vậy, có khả năng các hàng sẽ được trả lại theo thứ tự chúng được tìm thấy trong bộ nhớ vật lý.
Điều này có thể gần tương ứng với thứ tự các hàng đã được chèn, nếu không có lần xóa, không có cập nhật và không sắp xếp lại, trong đó không gian cho hàng đã chèn sau đó được lấy lại và được sử dụng lại để lưu trữ hàng mới được chèn.
Nhưng hành vi này KHÔNG được đảm bảo.
Để trả về các hàng theo thứ tự mà chúng đã được chèn, truy vấn phải chỉ định trình tự mà các hàng sẽ được trả về, bằng cách bao gồm một ORDER BY
mệnh đề.
Đối với các hàng được trả về theo "thứ tự chèn", điều đó có nghĩa là truy vấn cần phải có sẵn thông tin đó hoặc có thể lấy được thông tin đó. Đối với một truy vấn đơn giản đối với một bảng, điều đó có nghĩa là thông tin cần được lưu trữ trong hàng.