MySQL数据库查询默认是按什么进行排序的

2023-11-08

在这里插入图片描述

文章中所有操作均是在 MySQL 5.7 版本下进行的

引入问题

MySQL 普通查询它是按照什么进行排序的?我们稍微讨论下这个问题。我们先引入一个测试表:

drop table if exists tbl_test;
create table tbl_test(
    id	 int auto_increment primary key,
    num	 varchar(50),
    info varchar(50)
);
-- 插入测试数据
insert into tbl_test values 
(null, '20', 'val'),
(null, '11', 'val'),
(null, '33', 'val'),
(null, '15', 'val'),
(null, '2', 'val'),
(null, '7', 'val'),
(null, '5', 'val');
-- 执行查询
select * from tbl_test;
+----+------+------+
| id | num  | info |
+----+------+------+
|  1 | 20   | val  |
|  2 | 11   | val  |
|  3 | 33   | val  |
|  4 | 15   | val  |
|  5 | 2    | val  |
|  6 | 7    | val  |
|  7 | 5    | val  |
+----+------+------+
select id, num from tbl_test;
+----+------+
| id | num  |
+----+------+
|  1 | 20   |
|  2 | 11   |
|  3 | 33   |
|  4 | 15   |
|  5 | 2    |
|  6 | 7    |
|  7 | 5    |
+----+------+

以上测试表很简单,不管执行怎么样的查询,好像并没有区别。

继续讨论

这个时候将这个表稍微做一下修改。

-- 给表的num字段增加了一个很普通的key
alter table tbl_test add key(num);
-- 执行查询
select * from tbl_test;
+----+------+------+
| id | num  | info |
+----+------+------+
|  1 | 20   | val  |
|  2 | 11   | val  |
|  3 | 33   | val  |
|  4 | 15   | val  |
|  5 | 2    | val  |
|  6 | 7    | val  |
|  7 | 5    | val  |
+----+------+------+
select id, num from tbl_test;
+----+------+
| id | num  |
+----+------+
|  2 | 11   |
|  4 | 15   |
|  5 | 2    |
|  1 | 20   |
|  3 | 33   |
|  7 | 5    |
|  6 | 7    |
+----+------+

以上测试,会发现第二个查询出的结果集明显的出现了顺序的变化,显而易见,是那个新增加的 key 起了某些作用。

结语

篇幅很短,首先我们不能断然的说一个查询语句默认是主键进行的排序的,应该是在有前提的情况下(这个表只有主键并没有其它设置等可能是按照主键进行排序的)。其次更不能说按照数据的插入顺序了,这观点很明显没有证据并且很 low。很多因素影响到排序,比如上面的 key,索引方式,物理位置,MySQL 的存储引擎就有可能造成影响,所以一定要有顺序,还是使用 order by,order by 的列上建上索引更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL数据库查询默认是按什么进行排序的 的相关文章

  • 使用 EXPLAIN 进行 MYSQL 存储过程调用

    如何分析和使用 EXPLAIN 来调用我的存储过程 我需要优化查询时间 但是似乎没有地方可以执行 EXPLAIN 调用 proc name 你可以试试 set profiling 1 call proc name show profiles
  • 如何在 Laravel 中编写联合查询?

    我正在使用 laravel 5 0 并且我有 mysql 查询 SELECT surat masuk id surat surat masuk nomor surat FROM surat masuk WHERE EXISTS SELECT
  • 使用 mysql2 gem 获取最后插入的 id

    我有这样的代码 require mysql2 db query insert into clients Name values client 我可以通过 1 个查询返回最后插入的 ID 吗 您可以使用last id客户端实例的方法 clie
  • MySQL 5左连接未知列

    我有以下查询在 mysql 4 1 中工作 但在 5 0 中不起作用 SELECT FROM email e event email ee LEFT JOIN member m on m email e email WHERE ee ema
  • MySql 查询在选择中将 NULL 替换为空字符串

    如何用空字符串替换 select 中的 NULL 值 输出 NULL 值看起来不太专业 这是非常不寻常的 根据我的语法 我希望它能够工作 我希望能得到一个解释 为什么没有 select CASE prereq WHEN prereq IS
  • 自动将所有mysql表转储到单独的文件中?

    我想将每个 mysql 表转储到单独的文件中 手册指出其语法是 mysqldump options db name tbl name 这表明您事先知道表名称 我现在可以设置知道每个表名称的脚本 但是假设我在路上添加了一个新表并且忘记更新转储
  • MySQL“选择更新”行为

    根据 MySql 文档 MySql 支持多粒度锁定 MGL case 1 开放航站楼 1 连接到mysql mysql gt start transaction Query OK 0 rows affected 0 00 sec mysql
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • 如何在 join 语句中进行计数

    我有桌子post int post id varchar title text content和表comment int comment id int post id varchar content其中 post id 是外键引用表帖子 如
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 如何在数据库中保存未来(!)日期

    这个问题专门涉及未来的日期和时间 对于过去的值 UTC 无疑是首选 我想知道是否有人对拯救生命的 最佳 方法有建议futureMySQL 数据库中的日期和时间 或者就此而言一般来说 特别是在该列可以保存不同时区时间的情况下 考虑到时区规则可
  • 将 mysql LONGTEXT 值转换为 VARCHAR 值?

    我有一个在用户 Facebook 墙上发布的功能 我发送到 facebook 的一件事是我从设置为 LONGTEXT 的 mysql 表中获取的一些文本 如果我将表设置为 LONGTEXT 则文本不会发送到 facebook 但如果我将表设
  • 消除 JPA 标准中子查询产生的冗余连接

    我只需要使用 JPA 标准执行以下 MySQL 查询 获取状态列表 来自state table 基于给定的国家名称 在country SELECT state id state name country id FROM state tabl
  • 如何编写 bash 函数来包装另一个命令?

    我正在尝试编写一个函数包装器mysql command If my cnf存在于 pwd 中 我想自动附加 defaults file my cnf到命令 这就是我正在尝试的 function mysql if e my cnf then
  • MySQL 选择第一个字符在哪里

    如何选择单元格的第一个字符并使用它来定义返回的内容 看看MySQL 字符串 和 控制流 功能 http dev mysql com doc refman 5 1 en functions html 例如 SELECT IF LEFT myF
  • MySQL 和 MariaDB 数据库有什么区别?

    我已经使用 XAMPP 很长时间了 很惊讶 XAMPP 已经从 MySQL 切换到了 MariaDB https www apachefriends org index html https www apachefriends org in
  • MySQL 中的 group_concat 性能问题

    我添加了一个group concat到一个查询并杀死了性能 添加之前和之后的解释计划是相同的 所以我对如何优化它感到困惑 这是查询的简化版本 SELECT curRow curRow 1 AS row number docID docTyp
  • 如何告诉node.js mysql没有在默认端口上运行?

    我遇到了与此人类似的问题 连接 ECONNREFUSED 节点 js sql https stackoverflow com questions 8825342 connect econnrefused node js sql 我正在尝试将

随机推荐

  • 基于SpringBoot+Thymeleaf仓库管理系统

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 随着信息技术的
  • chrome Flash Player离线安装包下载

    Flash的离线安装包下载方式 适用于Chrome的Flash下载方式 https www flash cn flashplayer 3200101 install flash player ppapi cn exe 其中3200101代表
  • Angular UI-Router $ urlRouterProvider单击时不起作用

    如何解决Angular UI Router urlRouterProvider单击时不起作用 先前的解决方案 在0 2 12 我们可以使用的版本之前 urlRouterProvider when 在文档中建议使用 小引用 如何 设置默认 索
  • oracle connect by 学习

    Connect by 层次查询 https www bilibili com video BV1jV411t7CB share source copy web vd source d88a617727cccf1c106d623afec0c6
  • DBA 性能压测方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 前言 压测的具体方法有很多种 工具也有很多 但是压测要遵循的原则可以是不变的 万变不离其宗 制定好压测规范和原则 每次压测前问下自己 为什么要进行压测 我们预期的结果是什么
  • log4js日志的使用与详解

    日志 log4js 1 安装与引入 npm install log4js var log4js require log4js 2 配置 log4js configure appenders fileout type file filenam
  • 区块链产品经理规范与总结

    产品顺序职责 产品顺序 产品助理 产品经理 高级产品经理 产品总监 产品专家 CEO 产品助理职责 辅助产品经理完成产品工作 包括调研 设计 开发 上线等项目阶段 配合产品经理 完成产品测试工作 驱动产品质量提升 产品研发前体验竞品 产品上
  • nodejs 读取xlsx文件内容

    文章目录 nodejs 读取xlsx文件内容 将excel的日期格式转成Date 对象 nodejs 读取xlsx文件内容 安装 npm i node xlsx D 注意 文件所在绝对路径 F jie baiyi tuberculosis
  • Vue 中 computed ,watch,methods 的异同

    methods watch和computed都是以函数为基础的 computed 和 watch 都可以观察页面的相应式数据的变化 当处理页面的数据变化时 我们有时候很容易滥用watch 而通常更好的办法是使用computed计算属性 而不
  • h5 video视频播放的同时加水印,图片加水印同样的原理

    经常能看到播放视频的网站上加水印的效果 记录下成果以备后续看 效果图如下 h5页面视频播放的同时加水印 有以下3种方法可尝试 在原视频上添加 由于每次登陆的用户不一样 需要根据用户名动态确定水印的文本值 这并不现实 捕捉视频的每一帧 重新画
  • Java集合面试题

    目录 1 Java中集合的框架图 2 常用集合的分类 3 List接口详解 3 1 ArrayList集合类 3 2 LinkedList集合类 3 3 Vector集合类 4 Map接口详解 4 1 HashMap集合类 4 2 Hash
  • MOS管规格书参数解析

    在这之前 首先了解下三极管和MOS管的区别 三极管是电流控制型的器件 通过基极电流去控制集电极电流 实现电流 电压信号放大或者驱动负载工作 场效应管是电压控制器件 需要通过栅极 G 电压来控制场效应的导通 实现场效应的导通和关断 三极管由两
  • html使用vue3.0必须使用element plus

    开发环境 html用的vue2 x版本配合elementui 现要求使用vue3 x版本 发现必须elementui只能适用vue2 x 故使用element plus 由于并非vue文件 现通过CDN方式导入
  • 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上 游戏引擎导论

    本系列文章由zhmxy555 毛星云 编写 转载请注明出处 文章链接 http blog csdn net zhmxy555 article details 8250057 作者 毛星云 浅墨 邮箱 happylifemxy 163 com
  • Redis总结

    Redis 1 NoSQL的引言 NoSQL Not Only SQL 意即不仅仅是SQL 泛指非关系型的数据库 Nosql这个技术门类 早期就有人提出 发展至2009年趋势越发高涨 2 为什么是NoSQL 随着互联网网站的兴起 传统的关系
  • 黑苹果睡眠无法唤醒(OC引导)

    NVRAM 随机访问存储器设置 UUID 7C436110 AB2A 4BBB A880 FE41995C9F82 键 boot args 添加值 igfxonln 1
  • 2018老男孩脱产班linux运维51期

    2018老男孩脱产班linux运维51期 2018老男孩脱产班linux运维51期 2018老男孩脱产班linux运维51期 2018老男孩脱产班linux运维51期 链接 https pan baidu com s 1bnIJF6IoBC
  • Linux网络配置实验

    Linux的网络配置分为两种 手动和自动 下面我们先配置好Linux外面的设置 后面再去终端用命令行配置 框起来的网址记住 后面要用上 这里开始打开终端 用命令行配置 这是手动配置的 将前面记下来的网址适当填入对应的位置 对照这种图稍作修改
  • PBFT(拜占庭容错)

    PBFT 拜占庭容错 基于拜占庭将军问题 一致性的确保主要分为这三个阶段 预准备 pre prepare 准备 prepare 和确认 commit 流程如下图所示 其中C为发送请求端 0123为服务端 3为宕机的服务端 具体步骤如下 1
  • MySQL数据库查询默认是按什么进行排序的

    文章中所有操作均是在 MySQL 5 7 版本下进行的 引入问题 MySQL 普通查询它是按照什么进行排序的 我们稍微讨论下这个问题 我们先引入一个测试表 drop table if exists tbl test create table