mysql 默认排序问题

一年多前遇到过,select*fromuserwhereA>xxandB>xxxlimit10,A和B都是索引,当时查资料和自己测试都是可能会出现乱序。现在又测试了下,试... 一年多前遇到过,select * from user where A>xx and B>xxx limit 10,A和B都是索引,当时查资料和自己测试都是可能会出现乱序。现在又测试了下,试了很多次都不乱序了,想确定下这个问题。。。。
另:如果很多条数据指定的order by字段都相同时,会按照什么顺序来?
如果有知道其他数据库的也请不吝指教下那种数据库的情况
帮忙看下这图,ID是自增主键,现在排序字段相等的记录貌似完全没规律
展开
 我来答
majiguang
2011-03-21 · TA获得超过757个赞
知道小有建树答主
回答量:1024
采纳率:0%
帮助的人:1364万
展开全部
根数据库系统的算法有关,早期版本的算法是自然的多个线程二分法,那个线程先查到满足条件的数据就先输出出来,这样就是乱序的,后期经过改进按照主键自然排序输出。
如果order by的值相同,一般是按自然排序,就是首个字符的字母或汉字的发音的首字母的排序。
追问
看看这个,id是自增主键,不知道排序字段相等的记录是怎么排的
追答
order by的字段自然排序,如果你的order by 字段是resort,resort值相同的情况下,是可能有两种结果,一种就是你列出的随机排序,还有一种就是按主键来排序。这个问题不是固定的,还可能跟你的服务器性能都有关系,如果内存足够大,执行mysql的时候会提供足够大的缓冲池,也可能会出现另一种结果。
百度网友495e7ec91
2011-03-21 · 超过33用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:89.7万
展开全部
1、当获取所有字段内容时,默认从第一个字段开始比较。

如:id name 则默认以ID字段为标准对每条信息作比较,默认是从小到大顺序排列如果ID是自动增长的则获取的信息与数据库信息是一一对应的不会出现偏差。

2、当获取某个字段的内容时。

如:select name from table;

此时默认以此字段内容逐行对应比较,比较的规律 :从第一个字符开始如果相同比较下一个字符。

注意:汉字比较的是拼音的首字母。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友768b6a3f2
2011-03-22 · TA获得超过809个赞
知道小有建树答主
回答量:651
采纳率:0%
帮助的人:688万
展开全部
一般都会按照主键来做默认排序的。没有主键的话就会按照数据的插入时间先后来排序了。

楼主你可以继续深入排序啊,例如:
ORDER BY `resort` ASC, `type` DESC , `id` ASC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式