获取最后 x 条记录的最佳方法是什么?使用 MySQL 限制和 ORDER DESC?

What is the best approach to getting the last x records? Using MySQL Limit and ORDER DESC?

我想知道在性能或优化方面是否还有其他 best/better 实践。

编辑:我正在使用 PHP7。应该说清楚,我道歉。我正在为一个当地的非营利组织做一个志愿者项目,它的设置是这样的:

Table:志愿者

pk: v_id

所以我正在做的是: SELECT * from Volunteer ORDER BY v_id DESC LIMIT 25;

(他们希望 "last logs" 报告当前显示最后 25 个。)

EDIT2:我现在问这个问题的唯一原因是,我们已经在系统中达到了 10k 个志愿者日志,我开始意识到周一至周五他们可以添加 50-100(或更多)个日志每天所以它很快就会加起来。

如果你能以编程方式做到这一点 ORDERASCLIMIT X 然后向后循环记录。

如果您向我们提供您的语言(PHP、节点(java脚本)、java 等),我们可以帮助您进行向后循环,但它是这样的这 :

for(i=rows.length-1;i>=0;i--){
   //do your stuff here
}

如果你必须在 MySQL

SELECT 您的结果 ASCLIMIT X 作为子查询,然后包装在查询中 ORDER DESC

SELECT
*
FROM
(
    SELECT
    somecol
    FROM
    sometable
    ORDER BY
    the_date ASC
    LIMIT 100
) as a
ORDER BY
the_date DESC

UPDATE:最初提出问题的方式听起来像是您想要最后的 X 结果,按降序排列。我会保留我的答案,以防其他人来这里寻找答案。

您现在使用 ORDER BYLIMIT 所做的是最佳方式。要优化,您可能只想 SELECT 需要的列,并确保您在 v_id 上有唯一索引。如果您需要比这更多的优化,您可能需要考虑归档旧数据并经常清理。

Try Like this.It 是迄今为止最简单的

Select * from tablename order by column desc limit 5