So habe ich eine interessante Frage, die ich nicht sicher bin, ist ein "Hack" oder nicht. Ich habe einige Fragen durchgesehen, aber kein Duplikat gefunden, also ist es hier. Grundsätzlich muss ich wissen, ob dies unzuverlässig ist oder als schlechte Praxis angesehen wird.Fragwürdige SQL-Praxis - Reihenfolge nach ID statt Erstellungszeit
Ich habe eine sehr einfache Tabelle mit einer eindeutigen automatisch inkrementieren ID und einem created_at Zeitstempel.
+-----------+--------------------+
| 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 |
+-----------+--------------------+
Beide Säulen (vereinfachte Version meines Problems, das Konzept in Frage zu klären) werden dynamisch hinzugefügt, so dass es, dass ein neues gesagt werden kann, ‚Einfügen‘ wird IMMER eine größere ID und IMMER haben ein größeres Datum.
ZIEL - bestellen
SELECT * FROM tablename
ORDER BY created_at DESC
SOLUTION ZWEI in absteigender Reihenfolge eine Abfrage, die Aufträge nach Datum - sehr einfach die von created_at um
SOLUTION ONE absteigend geordnet Ergebnisse greifen - Eine Abfrage, die nach ID in absteigender Reihenfolge sortiert
SELECT * FROM tablename
ORDER BY id DESC
Wird Lösung zwei als schlechte Praxis angesehen? Oder ist Lösung zwei der richtige Weg, Dinge zu tun. Jede Erklärung Ihrer Überlegungen wäre sehr hilfreich, da ich versuche, das Konzept zu verstehen und nicht einfach eine Antwort zu bekommen. Danke im Voraus.
Nun, Sortierung nach ID kann und wird die Indizierung nutzen. Sie sollten relevante Teile Ihres Schemas in die Frage einbeziehen. – Perception
Während ich nicht weiß, ob es einen 'offiziellen Weg' gibt, um das zu tun, gibt es die 'Order by' Abfrage, um genau das zu tun. Um nach einer Spalte zu sortieren. Der einzige Nachteil, den ich sehe, ist, dass der Zeitstempel Duplikate haben kann (zwei Einfügungen in der gleichen Sekunde) UND dass die Abfrage aufgrund eines fehlenden Index möglicherweise langsamer ist. – ATaylor