sql >> Database >  >> RDS >> Mysql

MySQL, ORDER BY invoegvolgorde, geen sorteerkolommen

Er is geen garantie dat rijen in een bepaalde volgorde worden geretourneerd zonder een ORDER BY clausule in de zoekopdracht.

Overweeg een eenvoudige query die alle kolommen van alle rijen in een tabel retourneert. Bijvoorbeeld:

SELECT * FROM mytable ; 

Voor die query is het waarschijnlijk dat MySQL een volledige tabelscan zal uitvoeren vanaf het begin van de tabel. Het is dus waarschijnlijk dat de rijen worden geretourneerd in de volgorde waarin ze in de fysieke opslag zijn gevonden.

Dit kan ruwweg overeenkomen met de volgorde waarin rijen zijn ingevoegd, als er geen verwijderingen, updates en reorganisatie hebben plaatsgevonden, waarbij ruimte voor een ingevoegde rij later werd vrijgemaakt en opnieuw werd gebruikt om een ​​nieuw ingevoegde rij op te slaan.

Maar dit gedrag is NIET gegarandeerd.

Om de rijen te retourneren in de volgorde waarin ze zijn ingevoegd, moet de query de volgorde specificeren waarin de rijen moeten worden geretourneerd, door een ORDER BY op te nemen. clausule.

Om de rijen in "invoegvolgorde" te retourneren, betekent dit dat de query die informatie beschikbaar moet hebben, of in staat moet zijn dat af te leiden. Voor een eenvoudige query op een enkele tabel betekent dit dat de informatie in de rij moet worden opgeslagen.



  1. Moet de variabele @myvariable-fout declareren met een ADO-geparametriseerde query

  2. Hoe kan ik een BEFORE-UPDATED-trigger doen met sql-server?

  3. Een nieuwe VM voorbereiden voor SQL Server 2014 CTP1

  4. Hoe Extract() werkt in PostgreSQL