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

表结构:

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 默认排序是什么相关推荐

  1. mysql查询默认排序规则_深究 mysql 默认排序, order by 的顺序【收藏】

    mysql 语句中如果没有使用 order by 来排序,通常会用 主键正序排列,但是有的时候不是这样,来看一个实例. 实例 群友问:请教一个问题,mysql 默认排序问题,当sql 语句 的排序没有 ...

  2. MYSQL中group_concat有长度限制!默认1024

    在mysql中,有个函数叫"group_concat",平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了, 其实MYSQL内部对这个是有设置的,默认不设置的长度是1 ...

  3. MYSQL中group_concat有长度限制!默认1024(转载)

    在mysql中,有个函数叫"group_concat",平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了, 其实MYSQL内部对这个是有设置的,默认不设置的长度是1 ...

  4. mysql latin1 utf8差别_为什么mysql 默认的test数据库character是latin1不是utf8

    满意答案 raovaeew 2018.04.21 采纳率:55%    等级:9 已帮助:216人 MYSQL 字符集问题 MySQL的字符集支持(Character Set Support)有两个方 ...

  5. mac终端mysql的字符集_mac下修改mysql默认字符集为utf8

    1.首先检查默认安装的字符集 mysql> show variables like '%char%'; +--------------------------+----------------- ...

  6. window安装mysql默认密码忘记_window10 安装Mysql 8.0.17以及忘记密码重置密码

    一.安装Mysql8.0.17 1:首先去官网下载安装包 下载地址:https://dev.mysql.com/downloads/mysql/ 2:将解压文件解压到你安装的目录:D:\mysql\m ...

  7. mysql intt默认值_MySQL如何处理隐式默认值

    有同学说遇到了主从不一致的问题. 大概情况是,从库是用mysqldump导出导入数据的方式创建的.创建成功后,在用mysqldump验证主从的表结构是否一致的时候,发现有些表定义不一致: 从他的比较结 ...

  8. 12c安装默认密码_如何安装MySQL数据库和navicat客户端?

    如何安装数据库? MySQL数据库用于存放数据,客户端navicat是为了方便操作数据库而设计的一种图形化软件. 只要电脑上安装了客户端,在任何地方打开电脑,都可以使用客户端连接到MySQL数据库. ...

  9. mysql 默认时间_mysql中如何设置默认时间为当前时间?

    展开全部 修改日期类型为timestamp 并允许空,如下: CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestam ...

  10. mysql存储引擎查看语句,在MySQL中,可以使用(??)语句查看MySQL服务器采用的默认存储引擎...

    在MySQL中,可以使用(??)语句查看MySQL服务器采用的默认存储引擎 答:SHOW VARIABLES; 名词解释:顾姑冠 答:蒙古族已婚妇女的首服,由帽子.冠体.披幅.系带.冠顶.羽毛五部分组 ...

最新文章

  1. ProgressDialog的使用-------------范例(学习笔记)
  2. ecshop调用指定分类(包含子分类)下所有产品的评论信息
  3. 大项目之网上书城(十二)——完成啦
  4. mysql 现有的.sql_Mysql保持现有内容在后面增加内容的sql语句
  5. 学linux做笔记本,linux学习之笔记本安装CentOS7
  6. C#通用类库--数字转为人民币汉字大写表示
  7. Linux磁盘管理详解
  8. 内是不是半包围结构_什么是结构化面试、无领导小组讨论、结构化小组面试?教你快速搞懂国考面试三大形式。...
  9. concat oracle 多个字符串_12个常用的JavaScript字符串方法
  10. c4d细分曲面的使用和导出的一些快捷键笔记
  11. 毕业论文中含有Java需要哪些参考文献_Java毕业论文参考文献
  12. 企业微信api,企业微信sdk接口
  13. exe模拟器android版,安卓exe模拟器
  14. 运筹学学习笔记2 python-or tools 使用
  15. Oracle12c CDB和PDB数据库的启动与关闭说明
  16. 腾讯云学生机介绍—校园扶持计划
  17. 万圣节奇妙夜,不给糖就捣蛋—Python带你点击解锁恐怖新道具(南瓜头、骷髅、蝙蝠、糖......)
  18. 【杂谈】打工人如何喝一杯精致健康的咖啡
  19. 鸣人来教你安装配置JDK
  20. 【粒子动画】iOS流星雨效果如何实现

热门文章

  1. 范畴论-一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已
  2. OAuth 2.0 授权认证详解
  3. sre和devops_什么是SRE,它与DevOps有什么关系?
  4. [转贴]给想立志入行网络或已经初入行的朋友的建议(一)
  5. python正则表达式提取字符串中的书名_使用python正则表达式从字符串中提取名称...
  6. 繁华落尽——王思聪的熊猫直播之死,是腾讯对360的又一次胜利
  7. zabbix报警 High swap space usage ( less than 50% free) 解决方案
  8. web前端响应式设计总结
  9. 小程序心知天气API获取数据
  10. html+css+js制作点名器