Mysql 插入已排序的SQL条目

Mysql 插入已排序的SQL条目,mysql,sql,sorting,Mysql,Sql,Sorting,我想显示一个非常大的sql表。然而,在大多数情况下,我只想让它按datetime列排序 不幸的是,常规select查询只显示按主键(id)排序的表-因此,我必须始终手动将“order by”添加到select查询中,这是一个问题,因为即使使用索引,对表进行排序也需要几秒钟 那么我的问题是,有没有一种方法可以将排序后的新条目插入表中?(所谓“排序”,我的意思是按datetime列排序,而不是按id列排序)。传入条目(id=50)应在id=49之前排序,因为它具有更早的datetime值 然后,使用

我想显示一个非常大的sql表。然而,在大多数情况下,我只想让它按datetime列排序

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

那么我的问题是,有没有一种方法可以将排序后的新条目插入表中?(所谓“排序”,我的意思是按datetime列排序,而不是按id列排序)。传入条目(id=50)应在id=49之前排序,因为它具有更早的datetime值

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


我意识到这是一种不好的做法,我应该使用order by,但在我的情况下,这并不切实可行,因为我有数百万个条目,必须对每个select进行一次又一次的排序,它不会为将来的插入保持数据排序,但您可以像这样更改表顺序:

ALTER TABLE myTable ORDER BY timestamp

它不会为将来的插入保持数据排序,但您可以如下更改表顺序:

ALTER TABLE myTable ORDER BY timestamp

当您有MyISAM表时,您可以

ALTER TABLE your_table ORDER BY whatever_column;
但是,当您插入或更新条目时,表不会保持这种状态

阅读更多关于它的信息


但是,这对于InnoDB表没有意义。它们按聚集索引排序。在这种情况下,可以选择将主键扩展到
(datetime\u列,列\u that\u primary\u key\u so\u far)
。这是未经测试的,我个人会在
选择中添加一个
ORDER BY
,以防万一。

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

ALTER TABLE your_table ORDER BY whatever_column;
但是,当您插入或更新条目时,表不会保持这种状态

阅读更多关于它的信息


但是,这对于InnoDB表没有意义。它们按聚集索引排序。在这种情况下,可以选择将主键扩展到
(datetime\u列,列\u that\u primary\u key\u so\u far)
。这是未经测试的,我个人会在
选择中添加一个
ORDER BY
,以防万一。

我该怎么做?当我使用reuglar“insert”时,它只使用主键(id)并自动递增它并将其添加到表的底部。如何正确插入?现在,我只使用常规的
insert
进行插入,并显示“SELECT…ORDER BY”,这需要很长的时间,我该怎么做?当我使用reuglar“insert”时,它只使用主键(id)并自动递增它并将其添加到表的底部。如何正确插入?现在,我只需使用常规的插入,然后显示“选择…订购人”,这太长了谢谢,这真的很有帮助。谢谢,这真的很有帮助。