更改mysql默认排序规则

如题,我是更改特定的一张表的排序规则,是让这个规则对这个表一直生效,不是通过查询语句去排序,我是想根据里面的一个字段进行排序,不是根据插入顺序排序... 如题,我是更改特定的一张表的排序规则,是让这个规则对这个表一直生效,不是通过查询语句去排序,我是想根据里面的一个字段进行排序,不是根据插入顺序排序 展开
 我来答
松尾肢蛋CS
2018-09-27 · 超过17用户采纳过TA的回答
知道答主
回答量:34
采纳率:33%
帮助的人:3.9万
展开全部
今天遇到一个问题,有一个 Select 语句没有加 “Order By”,返回的数据是不确定的。
这种问题碰到不止几次了。追根寻底, Select 语句如果不加 “Order By”, MySQL会怎么排序呢?
* 不能依赖 MySQL 的默认排序
* 如果你想排序,总是加上 Order By
* GROUP BY 强加了 Order By (这与标准语法冲突,如果要避免,请使用 ORDER BY NULL)这里我有疑问,
到底强加了何种 Order by
对于 MyISAM 表
MySQL Select 默认排序是按照物理存储顺序显示的。(不进行额外排序).
也就是说
SELECT * FROM tbl – 会产生“表扫描”。如果表没有删除、替换、更新操作,记录会显示为插入的顺序。
InnoDB 表
同样的情况,会按主键的顺序排列。再次强调,这只是潜规则(artifact of the underlying implementation:怎么翻译?),
不靠谱的。
我的理解与推测:
“Select” 不加 “Order by”时, MySQL 会尝试以尽可能快的方法(MySQL 实际的方法不见得快)返回数据。
由于访问主键、索引大多数情况会快一些(在Cache里)所以返回的数据有可能以主键、索引的顺序输出,
这里并不会真的进行排序,主要是由于主键、索引本身就是排序放到内存的,所以连续输出时可能是某种序列。
在一些情况下消耗硬盘寻道时间最短的数据会先返回。
如果只查询单个表,在特殊的情况下是有规律的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式