我使用Sequel gem和一个有300k +条目的postgres数据库。我试图尽快获得最早和最新的条目,但是我迁移了数据库,并且一些条目按时间顺序失序。
如果我使用mydb[:items].first
和mydb[:items].last
,则查询只需要几分之一秒。但是,就像我说的那样,它们并不完全按照时间顺序排列,所以可能会搞砸了。如果我运行mydb[:items].order(:time).first
和mydb[:items].order(:time).last
,它可以运行,但需要更长时间(大约6秒)才能完成每个查询。
有没有办法重新排序数据库,所以它按时间顺序自然而然,所以我不必运行命令命令?或者我只是做错了什么?
答案 0 :(得分:1)
如果您想以特定顺序获取记录,则必须使用订单子句。如果没有提供sort子句,大多数数据库都不保证订单。
您应该按照用于排序的字段对表进行索引。