加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql 去掉默认排序_MySQL 默认排序是什么

发布时间:2023-01-10 10:33:41 所属栏目:MySql教程 来源:互联网
导读: 最近在优化分页查询时,有一个问题:查询不同列,分页出来得数据不一样。先看一下这个现象
表结构:
CREATE TABLE `t_attach` (
`id`int(11) unsigned NOT NULL AUTO_INCREMENT,
`fname` v

最近在优化分页查询时,有一个问题:查询不同列,分页出来得数据不一样。先看一下这个现象

表结构:

CREATE TABLE `t_attach` (

`id`int(11) unsigned NOT NULL AUTO_INCREMENT,

`fname` varchar(100) NOT NULL DEFAULT '',

`ftype` varchar(50) DEFAULT '',

`fkey` text NOT NULL,

`authorId`int(10) DEFAULT NULL,

`created`int(10) NOT NULL,

`hash` varchar(255) DEFAULT NULL,

`web_url` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `fname` (`fname`) USING BTREE,

KEY `created` (`created`) USING BTREE,

KEY `web_url` (`web_url`) USING BTREE,

KEY `authorId` (`authorId`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=323466 DEFAULT CHARSET=utf8;

这里面,有几个列建立了索引

看一下查询语句

SELECT * FROM t_attach LIMIT 10,10;

SELECT id,fname FROM t_attach LIMIT10,10;

SELECT id FROM t_attach LIMIT10,10

好奇怪,居然查询到的数据不是一致的。想了好久,应该是mysql排序的方式不一致导致的。

接着执行了一下EXPLAIN 分析一下看看

EXPLAIN SELECT * FROM t_attach LIMIT 10,10;

EXPLAIN SELECT id,fname FROM t_attach LIMIT10,10;

EXPLAIN SELECT id FROM t_attach LIMIT10,10

居然用到的key不一样,类似的情况也可以看下

可以看出,mysql在不给定order by条件的时候,得到的数据结果的顺序是跟查询列有关的。

因为在不同的查询列的时候,可能会使用到不同的索引条件。

Mysql在使用不同索引的时候,得到的数据顺序是不一样的。

这个可能就跟Mysql的索引建立机制MySQL 排序,以及索引的使用有关了。

可以参考这个看看。

为了避免这种情况,在以后的项目中,切记要加上order by

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!