mysql 默认排序是什么意思,MySQL 默认排序是什么
最近在优化分页查询时,有一个问题:查询不同列,分页出来得数据不一样。先看一下这个现象
表结构:
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 LIMIT 10,10;
SELECT id FROM t_attach LIMIT 10,10
好奇怪,居然查询到的数据不是一致的。想了好久,应该是mysql排序的方式不一致导致的。
接着执行了一下EXPLAIN 分析一下看看
EXPLAIN SELECT * FROM t_attach LIMIT 10,10;
EXPLAIN SELECT id,fname FROM t_attach LIMIT 10,10;
EXPLAIN SELECT id FROM t_attach LIMIT 10,10
①
②
③
居然用到的key不一样,类似的情况也可以看下
可以看出,mysql在不给定order by条件的时候,得到的数据结果的顺序是跟查询列有关的。
因为在不同的查询列的时候,可能会使用到不同的索引条件。
Mysql在使用不同索引的时候,得到的数据顺序是不一样的。
这个可能就跟Mysql的索引建立机制,以及索引的使用有关了。
可以参考这个看看。
为了避免这种情况,在以后的项目中,切记要加上order by
标签:10,NULL,DEFAULT,默认,attach,LIMIT,MySQL,排序,SELECT
来源: https://www.cnblogs.com/liran123/p/13084632.html
mysql 默认排序是什么意思,MySQL 默认排序是什么相关推荐
- mysql查询默认排序规则_深究 mysql 默认排序, order by 的顺序【收藏】
mysql 语句中如果没有使用 order by 来排序,通常会用 主键正序排列,但是有的时候不是这样,来看一个实例. 实例 群友问:请教一个问题,mysql 默认排序问题,当sql 语句 的排序没有 ...
- MYSQL中group_concat有长度限制!默认1024
在mysql中,有个函数叫"group_concat",平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了, 其实MYSQL内部对这个是有设置的,默认不设置的长度是1 ...
- MYSQL中group_concat有长度限制!默认1024(转载)
在mysql中,有个函数叫"group_concat",平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了, 其实MYSQL内部对这个是有设置的,默认不设置的长度是1 ...
- mysql latin1 utf8差别_为什么mysql 默认的test数据库character是latin1不是utf8
满意答案 raovaeew 2018.04.21 采纳率:55% 等级:9 已帮助:216人 MYSQL 字符集问题 MySQL的字符集支持(Character Set Support)有两个方 ...
- mac终端mysql的字符集_mac下修改mysql默认字符集为utf8
1.首先检查默认安装的字符集 mysql> show variables like '%char%'; +--------------------------+----------------- ...
- window安装mysql默认密码忘记_window10 安装Mysql 8.0.17以及忘记密码重置密码
一.安装Mysql8.0.17 1:首先去官网下载安装包 下载地址:https://dev.mysql.com/downloads/mysql/ 2:将解压文件解压到你安装的目录:D:\mysql\m ...
- mysql intt默认值_MySQL如何处理隐式默认值
有同学说遇到了主从不一致的问题. 大概情况是,从库是用mysqldump导出导入数据的方式创建的.创建成功后,在用mysqldump验证主从的表结构是否一致的时候,发现有些表定义不一致: 从他的比较结 ...
- 12c安装默认密码_如何安装MySQL数据库和navicat客户端?
如何安装数据库? MySQL数据库用于存放数据,客户端navicat是为了方便操作数据库而设计的一种图形化软件. 只要电脑上安装了客户端,在任何地方打开电脑,都可以使用客户端连接到MySQL数据库. ...
- mysql 默认时间_mysql中如何设置默认时间为当前时间?
展开全部 修改日期类型为timestamp 并允许空,如下: CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestam ...
- mysql存储引擎查看语句,在MySQL中,可以使用(??)语句查看MySQL服务器采用的默认存储引擎...
在MySQL中,可以使用(??)语句查看MySQL服务器采用的默认存储引擎 答:SHOW VARIABLES; 名词解释:顾姑冠 答:蒙古族已婚妇女的首服,由帽子.冠体.披幅.系带.冠顶.羽毛五部分组 ...
最新文章
- ProgressDialog的使用-------------范例(学习笔记)
- ecshop调用指定分类(包含子分类)下所有产品的评论信息
- 大项目之网上书城(十二)——完成啦
- mysql 现有的.sql_Mysql保持现有内容在后面增加内容的sql语句
- 学linux做笔记本,linux学习之笔记本安装CentOS7
- C#通用类库--数字转为人民币汉字大写表示
- Linux磁盘管理详解
- 内是不是半包围结构_什么是结构化面试、无领导小组讨论、结构化小组面试?教你快速搞懂国考面试三大形式。...
- concat oracle 多个字符串_12个常用的JavaScript字符串方法
- c4d细分曲面的使用和导出的一些快捷键笔记
- 毕业论文中含有Java需要哪些参考文献_Java毕业论文参考文献
- 企业微信api,企业微信sdk接口
- exe模拟器android版,安卓exe模拟器
- 运筹学学习笔记2 python-or tools 使用
- Oracle12c CDB和PDB数据库的启动与关闭说明
- 腾讯云学生机介绍—校园扶持计划
- 万圣节奇妙夜,不给糖就捣蛋—Python带你点击解锁恐怖新道具(南瓜头、骷髅、蝙蝠、糖......)
- 【杂谈】打工人如何喝一杯精致健康的咖啡
- 鸣人来教你安装配置JDK
- 【粒子动画】iOS流星雨效果如何实现
热门文章
- 范畴论-一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已
- OAuth 2.0 授权认证详解
- sre和devops_什么是SRE,它与DevOps有什么关系?
- [转贴]给想立志入行网络或已经初入行的朋友的建议(一)
- python正则表达式提取字符串中的书名_使用python正则表达式从字符串中提取名称...
- 繁华落尽——王思聪的熊猫直播之死,是腾讯对360的又一次胜利
- zabbix报警 High swap space usage ( less than 50% free) 解决方案
- web前端响应式设计总结
- 小程序心知天气API获取数据
- html+css+js制作点名器