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

MySQL, ORDER BY ordine di inserimento, nessuna colonna di ordinamento

Non vi è alcuna garanzia che le righe vengano restituite in un ordine particolare senza un ORDER BY clausola nella query.

Considera una semplice query che restituisce tutte le colonne di tutte le righe in una tabella. Ad esempio:

SELECT * FROM mytable ; 

Per quella query, è probabile che MySQL esegua una scansione completa della tabella, dall'inizio della tabella. Quindi è probabile che le righe vengano restituite nell'ordine in cui si trovano nella memoria fisica.

Questo potrebbe corrispondere all'incirca all'ordine di inserimento delle righe, se non ci sono state eliminazioni, aggiornamenti e riorganizzazione, dove lo spazio per una riga inserita è stato successivamente recuperato e riutilizzato per memorizzare una riga appena inserita.

Ma questo comportamento NON è garantito.

Per restituire le righe nell'ordine in cui sono state inserite, la query deve specificare la sequenza in cui le righe devono essere restituite, includendo un ORDER BY clausola.

Affinché le righe vengano restituite in "ordine di inserimento", ciò significa che la query deve poter disporre di tali informazioni o essere in grado di derivarle. Per una semplice query su una singola tabella, ciò significa che le informazioni devono essere archiviate nella riga.