精华内容
下载资源
问答
  • MySQL 8.0 新特性之降序索引

    千次阅读 2018-12-17 11:27:48
    MySQL 8.0 支持降序索引(Descending index):索引定义中的`DESC`不再被忽略,而是以降序方式存储...当查询需要针对某些列升序排序,同时针对另一些列降序排序时,降序索引使得优化器对于可以使用多列混合索引扫描。

    文章目录

    原文地址:MySQL 8.0 Reference Manual

    我在慕课网发布的免费视频讲解 MySQL 8.0 版本新特性

    MySQL 8.0 支持降序索引(Descending index):索引定义中的DESC不再被忽略,而是以降序方式存储索引键值。在之前的版本中,索引支持反向扫描,但是性能稍差一些。降序索引可以进行正向扫描,效率更高。当查询需要针对某些列升序排序,同时针对另一些列降序排序时,降序索引使得优化器对于可以使用多列混合索引扫描。

    考虑以下表的定义,其中包含了 2 个列,以及这 2 个列上的 4 种升序和降序索引组合:

    CREATE TABLE t (
      c1 INT, c2 INT,
      INDEX idx1 (c1 ASC, c2 ASC),
      INDEX idx2 (c1 ASC, c2 DESC),
      INDEX idx3 (c1 DESC, c2 ASC),
      INDEX idx4 (c1 DESC, c2 DESC)
    );
    

    表的定义中包含了 4 个不同的索引。优化器可以为不同的ORDER BY子句使用正向索引扫描,而不需要执行 filesort 排序:

    ORDER BY c1 ASC, c2 ASC    -- optimizer can use idx1
    ORDER BY c1 DESC, c2 DESC  -- optimizer can use idx4
    ORDER BY c1 ASC, c2 DESC   -- optimizer can use idx2
    ORDER BY c1 DESC, c2 ASC   -- optimizer can use idx3
    
    mysql> explain select * from t ORDER BY c1 ASC, c2 DESC;
    +----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------------+
    | id | select_type | table | partitions | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
    +----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------------+
    |  1 | SIMPLE      | t     | NULL       | index | NULL          | idx2 | 10      | NULL |    1 |   100.00 | Using index |
    +----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------------+
    1 row in set, 1 warning (0.00 sec)
    

    使用降序索引时需要满足以下条件:

    • 降序索引只支持 InnoDB 存储引擎,并且存在以下限制:

      • 如果一个二级索引中包含降序的索引列,或者主键中包含降序索引列,不支持索引缓存的修改。

      • InnoDB 的 SQL 解析器不会使用降序索引。 对于 InnoDB 全文检索而言,意味着被索引表的 FTS_DOC_ID 列上创建的索引不能定义成降序索引。更多信息,可以参考官方文档 Section 15.6.2.4, “InnoDB FULLTEXT Indexes”

    • 降序索引支持的数据类型和升序索引相同。

    • 降序索引支持普通(非计算)列和计算列(虚拟计算列和存储计算列)。

    • DISTINCT可以利用任何包含查重字段的索引(包括含有降序列的索引)。

    • 包含降序列的索引不会被用于那些使用了聚合函数,但没有GROUP BY子句的查询中的 MIN()/MAX() 函数优化。

    • 降序索引支持 BTREE 索引,但不支持 HASH 索引。降序索引不支持 FULLTEXT 或者 SPATIAL 索引。

      对于 HASH、FULLTEXT 以及 SPATIAL 索引,显式指定ASCDESC属性将会导致错误。

    欢迎留言讨论!

    展开全文
  • cb 13.6 降序索引

    2020-07-26 21:46:22
    MySQL 8.0 引入对降序索引的支持。...使用场景:对同时具有升序降序的ORDER BY 子句的查询很有用。 ASC 升序, DESC 降序 ALTER TABLE em ADD INDEX name_desc(first_name ASC, last_name DESC); ...

     

    MySQL 8.0 引入对降序索引的支持。以前是始终按升序存储。

    使用场景:对同时具有升序和降序的ORDER BY 子句的查询很有用。

     

    ASC 升序, DESC 降序

    ALTER TABLE em ADD INDEX name_desc(first_name ASC, last_name DESC);

     

    展开全文
  • Mysql多字段order by用法

    2017-11-01 11:20:00
    今天运维提出数据展示增加处理标识...mysql中,我们可以使用 ASC 或 DESC 关键字来设置查询结果是按升序降序排列。 默认情况下,它是按升序排列。 orderby后可加2个字段,用英文逗号隔开, 如A用升序, B降序...

    今天运维提出数据展示增加处理标识排序功能,看了代码发现原来已经order by了,是以id倒序排的,现需要同时对两个字段进行排序.

    加了个参数试了一下,结果报错了.... 后来发现少了个逗号...

    mysql中,我们可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列

    order by 后可加2个字段,用英文逗号隔开,

    如A用升序, B降序,SQL该这样写,order by A ASC,  B DESC;也可以这样写:order by A, B DESC;
    如果都用降序,必须用两个desc ,order by A DESC, B DESC;

    转载于:https://www.cnblogs.com/twelve-eleven/p/7765571.html

    展开全文
  • 在MSOL中提供了在查询语句中使用ORDER BY子句来进行排序,其包括了单列排序和多列排序,同时还可以进行升序降序排列。 1.单序排列 例; mysql>-按照学生的年龄以升序进行排列查询。 SELECT ID,StudentName,...

    MYSQL中的排序
    在MSOL中提供了在查询语句中使用ORDER BY子句来进行排序,其包括了单列排序和多列排序,同时还可以进行升序和降序排列。
    1.单序排列
    例;
    mysql>-按照学生的年龄以升序进行排列查询。
    SELECT ID,StudentName,Gender,Age FROM StudentInfo ORDER BY Age ASC;
    mysql>-按照学生的年龄以降序进行排列查询。
    SELECT ID,StudentName,Gender,Age FROM StudentInfo ORDER BY Age DESC;
    2.多列排序
    MySQL除了支持单列排序外,还可以按多列排序。多列排序时,Order by子句后面跟多个字段,路间用逗号隔开,每个字段后面都可以跟ASC或DESC。多列排序的基本运算过程是:数据库引按照第一一个字段以及升、降序规则排序查询结果,如果查询结果里在这个字段上有重复值,则科放些存在重复值的数据行按照第二个排序字段及其升、降序规则进行排序,以此类推。
    例:查询所有学员的信息,按照年龄从大到小排序,同岁的学生按照出生日期从小到大进行掉列,命令:
    myopb SELECT ID,StudentName GenereAgeBithdayFROM Studentifo ORDER BY Age
    DESC,Birthday ASC;

    展开全文
  • MySQL查询

    2021-05-31 14:39:10
    一、排序查询 1、单列排序 按某一个字段进行排序 asc:升序(默认,不写就是ASC) desc:降序 ...「对emp表使用salary进行降序排序,相同的使用id进行降序排序」 select * from emp order by sal...
  • MySQL重复查询

    2020-12-14 15:14:36
    MySQL重复查询 文章目录MySQL重复查询1....按照部门号升序而雇员的工资降序排序 select * from EMP order by deptno, sal desc; 使用年薪进行降序排序 select ename, sal*12+ifnull(comm,0) as '年薪' fr
  • 同时获得0228班,结果按照降序排序。 (1)首先查询原来的0115班和0228班所有代课天数,如下: (2)使用union关键字,如下: (3)修改韩信在php0115班的记录都是days =15,如下: (4...
  • MySQL排序查询

    2021-05-06 21:38:57
    MySQL 排序查询 1.使用 order by 字句 2.语法结构: SELECT 字段名 FROM 表名 [WHERE 字段名 = 值] ORDER BY 字段名[ASC/DESC]; 注:ASC表示升序,DESC表示降序;默认为升序。 3.排序分类: 单列排序:对表...
  • 1、order by排序问题 (1)order by 字段名+asc/desc 升序:asc代表从小到大,升序,asc可以省略; 降序:desc代表从大到小,降序,不可省略。 1)升序 ...(备注:聚合函数不能在where后面的条件中使用
  • 文章目录索引排序和文件排序介绍:文件排序出现的几种情况: 索引排序和文件排序介绍: 当对sql进行order by排序的时候,需要尽可能的使用索引排序,...order by 中同时存在 ASC 升序排序和 DESC 降序排序,如:selec
  • 当索引的顺序与ORDER BY中的列顺序相同且所有的列是同一方向(全部升序或者全部降序)时,可以使用索引来排序。如果查询是连接多个表,仅当ORDER BY中的所有列都是第一个表的列时才会使用索引。其它情况都会使用...
  • Mysql中单路排序和双路排序详解

    千次阅读 2020-07-29 02:46:36
    索引排序和文件排序介绍: 当对sql进行order by排序的时候,需要尽可能的使用索引排序,如果无法使用索引排序的话,...order by 中同时存在 ASC 升序排序和 DESC 降序排序,如:select a, b from staffs order by a
  • 按照部门号升序但雇员的工资降序排序 select * from EMP order by deptno, sal desc; 使用年薪进行降序排序 select ename, sal*12+ifnull(comm,0) as '年薪' from EMP order by 年薪 desc; 显示工资最高的员工的...
  • 多表查询: 在前面我...复习基本的查询操作:查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J:按照部门号升序而雇员的工资降序排序:使用年薪进行升序:分页查询:select 字段 fr...
  • 正确的顺序依赖于使用该索引的查询,并且同时需要考虑如何更好地满足排序和分组的需要(顺便说明,本节内容适用于B-Tree索引;哈希或者其他类型的索引并不会像B-Tree索引一样按顺序存储数据)。 在一个多列B-Tree...
  • 复合查询回顾基本查询多表查询自连接子查询单行子查询多行子查询多列子查询在from子句中使用子查询合并查询练习: ...按照部门号升序而雇员的工资降序排序 select * from EMP order by deptno, sal desc; 使用
  • mysql数据库操作

    2018-08-16 12:38:50
    小括号,not ,比较运算符 ,逻辑运算符,and比or优先级高,如果同时使用,建议使用(); 4、聚合 为了快速得到统计的数据,提供了5个聚合函数 Select 函数() from 表名; 1、count(*) 表示计算总行数,()中...
  • 一:DQL操作表单 排序:通过order by子句,可以将查询出的结果进行排序(排序只显示效果,不影响真实数据 ...-- 组合排序 (在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序) SELECT
  • MySQL命令大全

    2018-01-15 11:19:17
    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...
  • (1)在MySql中,使用 ASC 或 DESC 关键字来设置查询结果是按升序降序排列。 (2)尤其非常特别重要:默认按升序(ASC)排列。 (3)order by 后可加2个(或多个)字段,字段之间用英文逗号隔开。 (4)若A用升序...
  • MYSQL常用命令大全

    2011-05-30 13:31:24
    MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...
  • MySQL可以使用check约束,但check约束对数据验证没有任何作用。 create table temp( id int auto_increment, name varchar(20), age int, primary key(id), /*check约束*/ check(age > 20) ); 上面check约束要求age...
  • 而且,可以同时使用多个AND关键字,这样可以连接更多的条件表达式。 (3)模糊查询 like 像 LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与...
  • 同时系统具有灵活的产品架构、严密的安全性、系统百分百开放源代码方便功能的扩展,采用PHP+Mysql数据库架构,适合于各行各类的网站应用平台。目前已被多个大中型网站使用,广泛应用于门户,房产等网站的建立。 2012...
  • 同时系统具有灵活的产品架构、严密的安全性、系统百分百开放源代码方便功能的扩展,采用PHP+Mysql数据库架构,适合于各行各类的网站应用平台。目前已被多个大中型网站使用,广泛应用于门户,房产等网站的建立。随着...
  • 同时系统具有灵活的产品架构、严密的安全性、系统百分百开放源代码方便功能的扩展,采用PHP+Mysql数据库架构,适合于各行各类的网站应用平台。目前已被多个大中型网站使用,广泛应用于门户,房产等网站的建立。随着...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    3、升序降序。默认是升序(asc,从小到大排序),想降序时用desc。 如:SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price DESC; 注意:DESC 关键字只应用到直接位于其前面的列名。如果想...
  • 400电话办理选号系统

    2012-05-09 17:03:41
    更直观地将检索出的结果按条件升序降序排序。 9)自定义价格功能 通过管理后台可以对不同类型的号码设置不同的价格、套餐、优惠幅度及注解说明。 10)数据分享功能 程序内置百度分享功能,技术人员请修改index....
  • lightCMS集成了用户管理、权限管理、日志管理、菜单管理等后台管理框架的通用功能,同时也提供模型管理、分类管理等CMS系统中常用的功能。lightCMS的代码一键生成功能可以快速对特定模型生成增删改查代码,极大提高...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

mysql升序降序同时使用

mysql 订阅