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

SQL:qual è l'ordine predefinito per le query?

Non è presente un tale ordine. Tratto da http://forums.mysql.com/read .php?21,239471,239688#msg-239688

  • Non dipendere dall'ordine quando manca ORDER BY.

  • Specificare sempre ORDER BY se si desidera un ordine particolare -- in alcune situazioni il motore può eliminare ORDER BY a causa di come esegue altri passaggi.

  • GRUPPO PER forze ORDINE PER. (Questa è una violazione dello standard. Può essere evitata utilizzando ORDER BY NULL.)

SELECT * FROM tbl -- questo eseguirà una "scansione della tabella". Se la tabella non ha mai avuto DELETE/REPLACEs/UPDATE, i record si troveranno nell'ordine di inserimento, quindi ciò che hai osservato.

Se avessi fatto la stessa istruzione con una tabella InnoDB, sarebbero stati consegnati nell'ordine PRIMARY KEY, non nell'ordine INSERT. Ancora una volta, questo è un artefatto dell'implementazione sottostante, non qualcosa da cui dipendere.