limit不带order by,每次查询结果都一样吗?

innodb引擎下,如下语句

select * from table where id>100 limit 50

其中id是主键,没有order by id,这样的语句,每次结果都一样吗?

阅读 6.2k
1 个回答

这个问题有点意思,等同于是问当没有指定order by时,mysql innodb的默认排序是什么样的?
一般情况下,按照题主写的SQL语句,select*,除了id为条件以外没有别的查询条件,因此,返回的结果默认会按照id的顺序排列,如果在查询过程中表中没有插入新增、删除或者做id变更的操作,那么每次结果都是一样的。但是,任何时候都不要依赖这种默认顺序来进行有顺序、排列或者需要固定topX的业务设计,强烈不推荐,理由如下:
1、当表的索引不止主键一个时,查询依据的索引会根据查询SQL的变化而产生变化;
2、索引的算法不同,顺序也会不同;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题