我有一个非常大的 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/