Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

innodb引擎下,如下语句

select * from table where id>100 limit 50

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
514 views
Welcome To Ask or Share your Answers For Others

1 Answer

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...