我有一个sql语句,如下所示,试图检索表中的最新条目。我有两个问题:
按ID或日期订购会更好吗?
如何重写此sql语句以按日期重新排序?
SELECT id, comment, DATE_FORMAT(entry_date, '%W %H:%i') FROM comments ORDER BY id DESC LIMIT 10
答案 0 :(得分:5)
这取决于你最近的意思:
如果您指的是最近创建的记录,那么(在大多数情况下)主键ID将起作用。
如果您的意思是最近更新的记录,那么肯定是按日期。
要按日期排序,只需更改字段名称:ORDER BY entry_date DESC
答案 1 :(得分:0)
如果必须100%精确地排序最新行,则必须使用日期字段。当您想要对最新的内容进行排序时对时间字段进行排序非常有意义,如果已编入索引,则对日期进行排序将花费相同的时间而不是对id-s进行排序。
我认为id字段的值只能保证是唯一的,可能无法确保它们按插入时间排序。例如,id字段可以是循环字段(6,7,8,-7,-6 ......),或者允许对表进行后续修改以更改id字段但不知道是否保留它们的排序方式插入时间或并行事务可能决定在id和date字段中以不同的顺序插入新行。