mysql - 插入已排序的 SQL 条目

标签 mysql sql sorting

我有一个非常大的 SQL 表要显示。但是,在大多数情况下,我只想按我的日期时间列对其进行排序。

不幸的是,常规选择查询仅显示按主键(id)排序的表 - 因此,我必须始终手动将“order by”添加到我的选择查询中,这是一个问题,因为对表进行排序即使有索引,也需要几秒钟。

所以我的问题是,有没有办法将新条目排序插入表中? (我所说的“排序”是指按日期时间列排序,而不是按 id 列排序)。传入条目 (id=50) 应在 id=49 之前排序,因为它具有较早的日期时间值

然后,使用 SELECT * FROM myTable 应该已经显示按日期时间排序的所有内容

我意识到这是一种不好的做法,我应该使用 order-by,但在我的情况下它并不真正可行,因为我有数百万个条目,必须为每个选择一次又一次地排序

最佳答案

当你有 MyISAM 表时,你可以这样做

ALTER TABLE your_table ORDER BY whatever_column;

但是当您插入或更新条目时,表不会保持这种状态。

了解更多信息here .

但是,这对于 InnoDB 表没有意义。它们按聚集索引排序。在这种情况下,可以选择将主键扩展为 (datetime_column, column_thats_primary_key_so_far)。这是未经测试的,我个人会在 SELECT 中添加一个 ORDER BY,以防万一。

关于mysql - 插入已排序的 SQL 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43804609/

相关文章:

mysql - 为什么我无法为此查询获取正确的行字段?

mysql - 如何在一个sql触发器中使用多个事件?

过去 7 天的 MySQL 计数记录按零记录分组

sql - MySQL 子查询返回不正确的结果?

C#小数背包o(n logn)解决方案

php - MySQL嵌套查询如何选择多行

php - 检查数组以查找公共(public)数据

mysql - devexpress特殊标志报告

java - 对优先级队列中一系列具有较高优先级的元素和其他具有较低优先级的元素进行排序

sorting - go 中相对于另一个 slice 对 slice 进行排序