我有以下的sql语句,尝试从表格中检索最近的条目。我有两个问题:
Is it better to order by id or by date?
How do I rewrite this sql statement to re-order by date?
SELECT id, comment, DATE_FORMAT(entry_date, '%W %H:%i') FROM comments ORDER BY id DESC LIMIT 10
我有以下的sql语句,尝试从表格中检索最近的条目。我有两个问题:
Is it better to order by id or by date?
How do I rewrite this sql statement to re-order by date?
SELECT id, comment, DATE_FORMAT(entry_date, '%W %H:%i') FROM comments ORDER BY id DESC LIMIT 10
这取决于您所说的“最近”是什么意思:
如果您指的是最近创建的记录,则(在大多数情况下)按照主键id将起作用。
如果您指的是最近更新的记录,则一定要按照日期排序。
要按日期排序,只需更改字段名称:ORDER BY entry_date DESC
如果您需要100%准确地按最新行排序,则必须使用日期字段。当您想要按最新排序时,对时间字段进行排序非常有意义,如果已索引,则按日期排序将花费与按id-s排序相同的时间。
我假设id字段的值仅保证唯一性,可能没有办法确保它们按插入时间排序。例如,id字段可以是循环字段(6,7,8,-7,-6 ...),或者表格上的后续修改允许更改id字段,但不知道如何保留它们按插入时间排序,或并行事务可能会决定以不同的顺序在id和日期字段上插入新行。