sql >> Database teknologi >  >> RDS >> Mysql

MySQL, ORDER BY indsættelsesrækkefølge, ingen sorteringskolonner

Der er ingen garanti for, at rækker vil blive returneret i en bestemt rækkefølge uden en ORDER BY klausul i forespørgslen.

Overvej en simpel forespørgsel, der returnerer alle kolonner i alle rækker i en tabel. For eksempel:

SELECT * FROM mytable ; 

For den forespørgsel er det sandsynligt, at MySQL vil udføre en fuld tabelscanning fra begyndelsen af ​​tabellen. Så det er sandsynligt, at rækkerne vil blive returneret i den rækkefølge, de findes i fysisk opbevaring.

Dette kan nogenlunde svare til rækkefølgen, som rækker blev indsat, hvis der ikke har været nogen sletninger, ingen opdateringer og ingen omorganisering, hvor plads til en indsat række senere blev genvundet og genbrugt til at gemme en nyindsat række.

Men denne adfærd er IKKE garanteret.

For at returnere rækkerne i den rækkefølge, de blev indsat, skal forespørgslen angive rækkefølgen, som rækker skal returneres ved at inkludere en ORDER BY klausul.

For at rækkerne skal returneres i "indsættelsesrækkefølge", betyder det, at forespørgslen skal være i stand til at have denne information tilgængelig, eller være i stand til at udlede den. For en simpel forespørgsel mod en enkelt tabel betyder det, at oplysningerne skal gemmes i rækken.



  1. Pythons MySqlDB bliver ikke opdateret række

  2. Dvale annotering for PostgreSQL seriel type

  3. PARSE() vs TRY_PARSE() i SQL Server:Hvad er forskellen?

  4. Entity Framework 6 transaktion rollback