sql >> Databasteknik >  >> RDS >> Mysql

MySQL, ORDER BY insertion order, inga sorteringskolumner

Det finns ingen garanti för att rader kommer att returneras i någon speciell ordning utan en ORDER BY klausul i frågan.

Tänk på en enkel fråga som returnerar alla kolumner i alla rader i en tabell. Till exempel:

SELECT * FROM mytable ; 

För den frågan är det troligt att MySQL kommer att utföra en fullständig tabellskanning, från början av tabellen. Så det är troligt att raderna kommer att returneras i den ordning de finns i fysisk lagring.

Detta kan ungefär motsvara ordningen som rader infogades, om det inte har skett några raderingar, inga uppdateringar och ingen omorganisation, där utrymme för en infogat rad senare återtogs och återanvändes för att lagra en nyinfogad rad.

Men detta beteende är INTE garanterat.

För att returnera raderna i den ordning som de infogades måste frågan ange sekvensen som raderna ska returneras genom att inkludera en ORDER BY klausul.

För att raderna ska returneras i "insättningsordning" betyder det att frågan måste kunna ha den informationen tillgänglig, eller kunna härleda den. För en enkel fråga mot en enda tabell betyder det att informationen måste lagras i raden.



  1. Kan jag lägga till en UNIK begränsning till en PostgreSQL-tabell efter att den redan har skapats?

  2. WHERE IN (uppsättning av ID)

  3. Hämta den sista posten i varje grupp - MySQL

  4. Spåra hög tillgänglighet för PostgreSQL med hjärtslag