获取最后 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(或更多)个日志每天所以它很快就会加起来。
如果你能以编程方式做到这一点
ORDER
它 ASC
与 LIMIT X
然后向后循环记录。
如果您向我们提供您的语言(PHP、节点(java脚本)、java 等),我们可以帮助您进行向后循环,但它是这样的这 :
for(i=rows.length-1;i>=0;i--){
//do your stuff here
}
如果你必须在 MySQL
SELECT
您的结果 ASC
将 LIMIT 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 BY
和 LIMIT
所做的是最佳方式。要优化,您可能只想 SELECT
需要的列,并确保您在 v_id 上有唯一索引。如果您需要比这更多的优化,您可能需要考虑归档旧数据并经常清理。
Try Like this.It 是迄今为止最简单的
Select * from tablename order by column desc limit 5
我想知道在性能或优化方面是否还有其他 best/better 实践。
编辑:我正在使用 PHP7。应该说清楚,我道歉。我正在为一个当地的非营利组织做一个志愿者项目,它的设置是这样的:
Table:志愿者
pk: v_id
所以我正在做的是:
SELECT * from Volunteer ORDER BY v_id DESC LIMIT 25;
(他们希望 "last logs" 报告当前显示最后 25 个。)
EDIT2:我现在问这个问题的唯一原因是,我们已经在系统中达到了 10k 个志愿者日志,我开始意识到周一至周五他们可以添加 50-100(或更多)个日志每天所以它很快就会加起来。
如果你能以编程方式做到这一点
ORDER
它 ASC
与 LIMIT X
然后向后循环记录。
如果您向我们提供您的语言(PHP、节点(java脚本)、java 等),我们可以帮助您进行向后循环,但它是这样的这 :
for(i=rows.length-1;i>=0;i--){
//do your stuff here
}
如果你必须在 MySQL
SELECT
您的结果 ASC
将 LIMIT 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 BY
和 LIMIT
所做的是最佳方式。要优化,您可能只想 SELECT
需要的列,并确保您在 v_id 上有唯一索引。如果您需要比这更多的优化,您可能需要考虑归档旧数据并经常清理。
Try Like this.It 是迄今为止最简单的
Select * from tablename order by column desc limit 5