Mysql Active Record的第一个方法是否按id排序?

Mysql Active Record的第一个方法是否按id排序?,mysql,ruby-on-rails,Mysql,Ruby On Rails,调用User.last时,活动记录似乎按id排序 用户加载1.4ms选择*FROMusersORDER BY users.id DESC LIMIT 1 但在调用User.first时,它不使用order子句 用户加载1.9ms从UserSlimit 1中选择* 那么,这是否保证返回具有最低id的用户?这在实践中似乎是可行的,但我不确定MySQL是否能保证这一点 或者您必须这样做:User.first:order=>'id'强制使用order子句 编辑:我想这真的是一个MySQL问题。SELEC

调用User.last时,活动记录似乎按id排序

用户加载1.4ms选择*FROMusersORDER BY users.id DESC LIMIT 1

但在调用User.first时,它不使用order子句

用户加载1.9ms从UserSlimit 1中选择*

那么,这是否保证返回具有最低id的用户?这在实践中似乎是可行的,但我不确定MySQL是否能保证这一点

或者您必须这样做:User.first:order=>'id'强制使用order子句


编辑:我想这真的是一个MySQL问题。SELECT*FROMusersLIMIT 1是否保证返回id最低的用户?

不确定ActiveRecord默认做什么,但您可以使用ActiveRecord的方法强制模型中的默认订单:

或者在Rails 3中

default_scope order("id ASC")

它将返回与相同的结果

select * from users limit 1

因此,如何对数据进行排序取决于您的数据库。i、 e.您必须添加上述任何订购方法。

但是AR是否强制按ID订购,默认情况下mysql按新鲜度订购记录。。。或者我错了?我只能假设对于first的默认顺序,AR什么也不做,将顺序留给DB,在这种情况下,DB将按插入顺序进行排序,插入顺序恰好对应于id ASC。最后,这种方法不起作用,所以AR使用id DESC。但这只是一个猜测。
select * from users limit 1