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