Quindi ho una domanda interessante che non sono sicuro sia considerata un 'trucco' o meno. Ho esaminato alcune domande ma non ho trovato un duplicato, quindi eccolo qui. Fondamentalmente, ho bisogno di sapere se questo è inaffidabile o considerato una cattiva pratica.Pratica SQL discutibile - Ordina per id anziché tempo di creazione
Ho una tabella molto semplice con un ID di incremento automatico univoco e un timestamp created_at. (versione semplificata del mio problema a chiarire il concetto in questione)
+-----------+--------------------+
| id |created_at |
+-----------+--------------------+
| 1 |2012-12-11 20:35:19 |
| 2 |2012-12-12 20:35:19 |
| 3 |2012-12-13 20:35:19 |
| 4 |2012-12-14 20:35:19 |
+-----------+--------------------+
Entrambe queste colonne sono aggiunti dinamicamente in modo si può dire che un nuovo 'inserto' sarà SEMPRE avere una maggiore id e SEMPRE hanno una data più grande.
OBIETTIVO - molto semplicemente prendere i risultati in ordine di created_at per
soluzione one decrescente - Una query che gli ordini per data in ordine
SELECT * FROM tablename
ORDER BY created_at DESC
soluzione dei due decrescente - Una query che ordina per ID in ordine decrescente
SELECT * FROM tablename
ORDER BY id DESC
La soluzione due è considerata una cattiva pratica? O la soluzione due è il modo corretto di fare le cose. Qualsiasi spiegazione dei tuoi ragionamenti sarebbe molto utile mentre sto cercando di capire il concetto, non solo di ottenere una risposta. Grazie in anticipo.
Bene, l'ordinamento per ID può e trarrà vantaggio dall'indicizzazione. Dovresti includere parti rilevanti del tuo schema nella domanda. – Perception
Anche se non so se c'è un "modo ufficiale" per farlo, la query "ordina per" esiste per fare proprio questo. Per ordinare da una colonna. L'unico inconveniente che vedo è che il timestamp può avere duplicati (due inserti nello stesso secondo) E che la query potrebbe essere più lenta, a causa di un indice mancante. – ATaylor