我有一个要显示的非常大的sql表。然而,在大多数情况下,我只想让它按我的datetime列排序。
不幸的是,常规的select查询只显示按主键(id)排序的表,因此,我必须始终手动将‘ordered’添加到select-query中,这是一个问题,因为对表排序需要几秒钟,即使使用索引也是如此。
那么,我的问题是,是否有一种方法可以将新条目按顺序插入到表中?(我的意思是,按datetime列排序,而不是id列)。传入项(id=50)应该在id=49之前进行排序,因为它有一个较早的日期时间值。
然后,使用SELECT * FROM myTable应该已经显示了按日期时间排序的所有内容。
我意识到这是一种糟糕的做法,我应该使用order-by,但在我的情况下这并不可行,因为我有数以百万计的条目,必须对每一个选择进行一次又一次的排序。
发布于 2017-05-05 12:20:19
当您有一个MyISAM表时,您可以
ALTER TABLE your_table ORDER BY whatever_column;但是,在插入或更新条目时,表不会保持这种状态。
阅读更多关于它的这里。
然而,对于InnoDB表来说,这是没有意义的。它们按照聚集索引进行排序。在这种情况下,可以选择将主键扩展到(datetime_column, column_thats_primary_key_so_far)。这是未经测试的,我个人会添加一个ORDER BY到SELECT,以防万一。
发布于 2017-05-05 12:20:11
它不会为将来的插入保留数据排序,但是您可以像这样更改表的顺序:
ALTER TABLE myTable ORDER BY timestamphttps://stackoverflow.com/questions/43804609
复制相似问题