1

我想知道在性能或优化方面是否还有其他最佳/更好的做法。

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

表:志愿者

pk:v_id

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

(他们希望当前显示最后 25 个“最后日志”报告。)

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

4

2 回答 2

0

像这样试试,目前为止最简单的

Select * from tablename order by column desc limit 5
于 2016-04-01T01:39:12.240 回答
-1

如果您可以通过编程方式执行此操作 ORDERASC然后LIMIT X向后循环记录。

如果您向我们提供您的语言(PHP、node(javascript)、java 等),我们可以帮助您完成反向循环,但它是这样的:

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

如果你必须在 MySQL 中进行

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

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

更新:最初提出问题的方式听起来像是您想要最后的X结果,订购了DESC。我会留下我的答案,以防其他人来这里寻找答案。

你现在用ORDER BYand做的事情LIMIT是最好的方法。要进行优化,您可能SELECT只需要您需要的列,并确保您在 v_id 上有一个唯一索引。如果您需要更多优化,您可能需要考虑归档旧数据并经常清理。

于 2016-04-01T01:27:55.200 回答