php - 如何创建一个主键按 DESC 排序的 MySQL 表,并在插入新行后保持这种状态?

标签 php mysql sorting sql-order-by primary-key

我需要创建一个 InnoDB 表,用于向其中添加数据并不断获取添加到其中的最新 10 行。为了避免必须对 每个 SELECT 查询执行 ORDER BY 来获取最后 10 行,我希望表本身按主键DESC顺序排列,这样我就可以完全跳过ORDER BY,只需执行SELECT ... LIMIT 10,它应该自动提取添加到表中的最新 10 行。

我怎样才能做到这一点?是否与将 ORDER BY [PRIMARYKEY] DESC 添加到 CREATE TABLE 查询一样简单?即使在INSERT新行之后,表格是否仍继续DESC顺序排序?

最佳答案

RDBMS 永远不会对其管理的任何表中的行顺序提供任何保证。获得特定订单的唯一方法是索取。对于 MySQL 的情况,当主键处于自动递增模式时,行经常会按主键升序排序,但这不是一个保证的属性。

在查询中使用 ORDER BY 以获得所需的结果。

另一方面,如果主键类型是 BTREE(这是大多数引擎的默认类型),排序会更快。

排序方向isn't yet used on MySQL 5.5

关于php - 如何创建一个主键按 DESC 排序的 MySQL 表,并在插入新行后保持这种状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16042721/

相关文章:

mysql - SQL 大小写正则表达式查询

php - 在 Woocommerce 中编写条件自定义产品选项卡有更好的方法吗?

c# - 比较两个不同数据库的所有字段: Whats the way to go?

javascript - 数据表服务器端添加带参数的列

mysql - 使用:include statement to find records

algorithm - 如何从给定的数字中找到最接近的一组数字?

ios - 当键是数字时,我应该在 objC 中为键值对使用什么数据结构?

javascript - 按日期javascript对JSON数据进行排序

php - DomPDF 并排放置2个表格

javascript - Stripe 支付流程