我需要创建一个 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(这是大多数引擎的默认类型),排序会更快。
关于php - 如何创建一个主键按 DESC 排序的 MySQL 表,并在插入新行后保持这种状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16042721/