MySQL 降序索引简介?

使用过Oracle、SQLServer数据库的降序索引的同学,可能在使用MySQL8.0之前版本时有个疑惑,明明我已经创建了将需要索引,但是为何执行时走不了索引或者效果不理想?

1. 创建环境

分别在MySQL5.7 及MySQL8.0版本中创建如下表及数据


# 创建表
 create table   test1(
 id int primary key auto_increment,
 name  varchar(100),
 create_time datetime
 );

# 插入部分测试数据,有条件的创建更多数据更佳
 insert into  test1(name,creatE_time) values('anniuadaOAIFAPUHIA','2020-07-01 12:00:00');
 insert into  test1(name,creatE_time) values('CWQSsar3qcssg','2020-07-01 15:00:00');
 insert into  test1(name,creatE_time) values('vxfqrt2adafz','2020-07-01 21:30:00');
 insert into  test1(name,creatE_time) values('etxzwrwbdhegqgaheqhag','2020-07-02 01:30:00');
 insert into  test1(name,creatE_time) values('awrs433fsgvsfwtwg','2020-07-02 03:30:00');
 insert into  test1(name,creatE_time) values('awrs433fsgvsfwtwg','2020-07-02 07:32:00');
 insert into  test1(name,creatE_time) values('awrs433fsgvsfwtwg','2020-07-02 10:32:00');
 insert into  test1(name,creatE_time) values('tuilklmdadq','2020-07-02 15:32:00');
 insert into  test1(name,creatE_time) values('wesv2wqdshehq','2020-07-02 20:32:00');
 insert into  test1(name,creatE_time) values('89yoijnlkwr1','2020-07-03 02:56:00');
 insert into  test1(name,creatE_time) values('olj;nsaaq','2020-07-03 08:41:00');
 insert into  test1(name,creatE_time) values('ygo;jkdsaq','2020-07-03 16:20:00');

2. MySQL5.7中创建索引并查看执行计划

2.1 MySQL5.7中创建升序索引

在MySQL5.7中创建升序索引,并执行SQL查看执行计划


# 升序索引
alter table test1 add key  idx_nameAsc_createtimeAsc( name,create_time);

执行语句查看执行计划


mysql> explain  select * from  test1 order by  name desc ,create_time ;
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+
| id | select_type | table | partitions | type  | possible_keys | key                       | key_len | ref  | rows | filtered | Extra                       |
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+
|  1 | SIMPLE      | test1 | NULL       | index | NULL          | idx_nameAsc_createtimeAsc | 309     | NULL |   12 |   100.00 | Using index; Using filesort |
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+

2.2 MySQL5.7中创建降序索引

在MySQL5.7中创建降序索引,并执行SQL查看执行计划


# 创建降序索引
alter table test1 add key  idx_nameDesc_createtimeAsc( name desc ,create_time);

执行SQL并查看执行计划


mysql> explain  select * from  test1 order by  name desc ,create_time;
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+
| id | select_type | table | partitions | type  | possible_keys | key                       | key_len | ref  | rows | filtered | Extra                       |
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+
|  1 | SIMPLE      | test1 | NULL       | index | NULL          | idx_nameAsc_createtimeAsc | 309     | NULL |   12 |   100.00 | Using index; Using filesort |
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+

发现使用的仍是升序索引,且用到了filesort

2.3 MySQL5.7中查看索引情况

查看索引情况会发现,MySQL5.7中,即使创建了降序索引,但是,排序方式依旧是升序(A[sc])


mysql> show index from test1;
+-------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name                   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| test1 |          0 | PRIMARY                    |            1 | id          | A         |          12 |     NULL | NULL   |      | BTREE      |         |               |
| test1 |          1 | idx_nameAsc_createtimeAsc  |            1 | name        | A         |          10 |     NULL | NULL   | YES  | BTREE      |         |               |
| test1 |          1 | idx_nameAsc_createtimeAsc  |            2 | create_time | A         |          12 |     NULL | NULL   | YES  | BTREE      |         |               |
| test1 |          1 | idx_nameDesc_createtimeAsc |            1 | name        | A         |          10 |     NULL | NULL   | YES  | BTREE      |         |               |
| test1 |          1 | idx_nameDesc_createtimeAsc |            2 | create_time | A         |          12 |     NULL | NULL   | YES  | BTREE      |         |               |
+-------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

3. MySQL8.0中创建索引并查看执行计划

3.1 MySQL5.7中创建升序索引

在MySQL8.0中创建升序索引,并执行SQL查看执行计划


# 升序索引
alter table test1 add key  idx_nameAsc_createtimeAsc( name,create_time);

执行语句查看执行计划


mysql> explain  select * from  test1 order by  name desc ,create_time ;
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+
| id | select_type | table | partitions | type  | possible_keys | key                       | key_len | ref  | rows | filtered | Extra                       |
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+
|1| SIMPLE      | test1 | NULL       | index | NULL          | idx_nameAsc_createtimeAsc | 309     | NULL |   12 |100.00| Using index; Using filesort |
+----+-------------+-------+------------+-------+---------------+---------------------------+---------+------+------+----------+-----------------------------+

结果和MySQL5.7 一致,也是需要进行filesort

3.2 MySQL8.0中创建降序索引

在MySQL8.0中创建降序索引,并执行SQL查看执行计划


# 创建降序索引
alter table test1 add key  idx_nameDesc_createtimeAsc( name desc ,create_time);

执行SQL并查看执行计划


mysql> explain  select * from  test1 order by  name desc ,create_time ;
+----+-------------+-------+------------+-------+---------------+----------------------------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type  | possible_keys | key                        | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------------+-------+---------------+----------------------------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | test1 | NULL       | index | NULL          | idx_nameDesc_createtimeAsc | 409     | NULL |   12 |   100.00 | Using index |
+----+-------------+-------+------------+-------+---------------+----------------------------+---------+------+------+----------+-------------+

可见,MySQL8.0中的降序索引被使用到了,且排序无需进行filesort

3.3 MySQL8.0中查看索引情况

查看索引情况会发现,MySQL8.0中,升序索引及降序索引的排序方式出现了区分了


+-------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name                   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+-------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| test1 |          0 | PRIMARY                    |            1 | id          | A         |          12 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| test1 |          1 | idx_nameAsc_createtimeAsc  |            1 | name        | A         |          10 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| test1 |          1 | idx_nameAsc_createtimeAsc  |            2 | create_time | A         |          12 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| test1 |          1 | idx_nameDesc_createtimeAsc |            1 | name        | D         |          10 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
| test1 |          1 | idx_nameDesc_createtimeAsc |            2 | create_time | A         |          12 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
+-------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------

4. 小结

  • MySQL5.7中,可以创建降序索引,但只是停留在语法层面上,到MySQL8.0才能使用上降序索引
  • 另外,如果在MySQL5.7及之前版本,order by 多个字段时,建议排序方式一致(可以均升序或均降序),这样方可无需filesort

本文转载于网络 如有侵权请联系删除

相关文章

  • 如何用 Rust 编写一个 Linux 内核模块

    近些年来Rust语言由于其内存安全性和性能等优势得到了很多关注,尤其是Linux内核也在准备将其集成到其中,因此,我们特邀阿里云工程师苏子彬为我们介绍一下如何在Linux内核中集成Rust支持。作者:苏子彬(本文字数:5586,阅读时长大约:7分钟)编者按:近些年来Rust语言由于其内存安全性和性能等优势得到了很多关注,尤其是Linux内核也在准备将其集成到其中,因此,我们特邀阿里云工程师苏子彬为我们介绍一下如何在Linux内核中集成Rust支持。2021年4月14号,一封主题名为《Rustsupport》的邮件出现在LKML邮件组中。这封邮件主要介绍了向内核引入Rust语言支持的一些看法以及所做的工作。邮件的发送者是MiguelOjeda,为内核中Compilerattributes、.clang-format等多个模块的维护者,也是目前RustforLinux项目的维护者。RustforLinux项目目前得到了Google的大力支持,MiguelOjeda当前的全职工作就是负责RustforLinux项目。长期以来,内核使用C语言和汇编语言作为主要的开发语言,部分辅助语言包括Pyt

  • 基于Python词云分析政府工作报告关键词

    前言十三届全国人大三次会议作了政府工作报告。这份政府工作报告仅有10500字左右,据悉是改革开放40年以来最短的一次。受到疫情影响,今年的两会会议适当缩短,政府工作报告也大幅压缩,体现了“实干为要”的理念。那么,这份政府工作报告突出强调了哪些关键词呢?我们其实可以基于Python技术进行词频分析和词云制作!importmatplotlib.pyplotasplt#绘图库 importjieba fromwordcloudimportWordCloud #读入文本数据 fp=open(r'D:\爬虫下载20年政府工作报告.txt','r',encoding='utf-8') content=fp.read() #print(content) #分词 words=jieba.lcut(content) #词频分析操作 data={} forwordinwords: iflen(word)1: ifwordindata: data[word]+=1 else: data[word]=1 #print(data) #排序 hist

  • python数据结构

    python数据结构列表将列表当做堆栈使用将列表当作队列使用列表推导式嵌套列表解析del语句元组和序列集合字典遍历技巧列表Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。  以下是Python中列表>>> a = [66.25, 333, 333, 1, 1234.5] >>> print(a.count(333), a.count(66.25), a.count('x')) 2 1 0 >>> a.insert(2, -1) >>> a.append(333) >>> a [66.25, 333, -1, 333, 1, 1234.5, 333] >>> a.index(333) 1 >>> a.remove(333) >>> a [66.25, -1, 333, 1, 1234.5, 333] >>> a.reverse() >&

  • 一些PHP选项参数相关的函数

    一些PHP选项参数相关的函数关于PHP的配置,我们大多数情况下都是去查看php.ini文件或者通过命令行来查询某些信息,其实,PHP的一些内置函数也可以帮助我们去查看或操作这些配置参数。比如之前我们学习过的关于php的ini文件相关操作函数浅析。修改方面的函数就只有ini_set(),其他大部分的函数其实都是帮助我们进行查询的,今天,我们就来一一讲解这些函数。get_defined_constants()返回所有常量的关联数组,键是常量名,值是常量值。define("MY_CONSTANT",1); print_r(get_defined_constants(true)); //array( //…… //[user]=>array( //[MY_CONSTANT]=>1 //) //) 复制这个函数会输出所有的常量,因为返回的内容很多,所以用......表示有很多系统或扩展的定义常量,而我们在代码中自己定义的常量则会全部进入到[user]这个键名下。这个函数有一个参数,当它为true时,让此函数返回一个多维数组,分类为第一维的键名,常量和它们的值位于第

  • 分享一份全国行政区划sql数据库表

    "Yourworldisalivingexpressionofhowyouareusing—andhaveused—yourmind.——EarlNightingale"还在为寻找全国行政区划的数据而烦恼吗?还在因为一个Excel表格无法确定信息是否全面而惆怅吗?快来看看为你准备好的东西吧!更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』说明在软件开发的过程中,最基础最重要但是又最不容易寻找的一份数据便是「全国行政区划信息」。为了解决大家的烦恼,此处提供一份sql数据库文件,直接导入即可使用,省时省力,快来实践一下吧。1.环境关系数据库(本人使用的数据库为MySQL8.0.19)2.文件数据库文件为AREAS.sql,数据条数为3487,十分全面的涵盖了全国的省市县等信息。此文件包括建表以及准备的数据获取方式:关注公众号「全栈技术精选」,后台回复关键字「全国行政区划信息」即可获取。3.使用1)先将获取到的文件AREAS.sql放到任意目录下(比如目录sqlfile),然后进入此目录:cdsqlfile复制2)先进入数据库(以mysql为例):my

  • [C语言] 变量和数据类型和整数和字符

    1.数据类型和变量:数据是放在内存中的,明确三件事:数据存储在哪里、数据的长度以及数据的处理方式intn;数据类型指明了数据的长度和处理方式,变量名指明了数据存储在哪里2.数据长度:是指数据占用多少个字节,数据类型指明了数据长度基本类型占用的字节数:char1,short2,int4,long4,float4,double83.整数的长度,C语言并没有严格规定short、int、long所占用的字节数,只做了宽泛的限制:short至少占用2个字节。int建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。short的长度不能大于int,long的长度不能小于int。4.整数的正负数:int是4个字节占用32位内存,第31位表示符号,0是正数,1是负数;如果不希望设置符号位,可以在数据类型前面加unsigned如果不考虑正负数,当所有的位都为1时它的值最大,为2的32次方-1=4,294,967,295≈43亿计算:111:2的3次方-1101:2的2次方+2的0次方10:2的1次方+2的0次方5.在内存中,数值一律采用补码表示原码:一个整数转成二进制;反码:

  • Office线上预览编辑解决方案对比

    Office文件常常以附件的形式存在于各种系统中。大家对于线上附件的最常用的需求是预览,偶尔会有简单的编辑。目前在大多数的场景下是将附件下载到本地使用桌面Office程序来打开预览或者编辑,这样做的最大问题是破坏了原有系统的闭环,在有编辑的需求下会陷入到下载编辑-》上传—〉其他用户再次下载阅读的循环。这个过程往往会出错,并且也很不便利。因此对于这种场景最好的解决方案是office文件能够线上预览编辑。目前在线文档类的产品很多有Office365,wps+,腾讯文档,石墨,基于开源的onlyoffice的衍生产品以及一些纯粹只有Office预览功能的产品。根据企业应用的场景,我们将从Office兼容性,是否有API方案,私有化部署,产品品牌,以及实施成本等几个方面来进行对比。之所以选择这几个维度进行对比的主要原因是考虑到企业的应用要求:兼容性:因为企业里面主要的文件是以Office的形式存在的,并且Office文件格式有一定的复杂性,例如合同等文件,不仅仅文件比较大,而且格式内容也比较复杂。单纯的笔记类工具是不足以处理复杂的office文件的。API:企业里面使用Office线上预览的大

  • 全局比对

    一、全局比对全局比对是用来衡量两条序列整体的相似性,满足整体相似性最大化。若两条序列长度不同,则必须插入一些空位使所有位点都能对应起来。而局部比对则不同,两条亲缘关系较远的DNA或氨基酸可能只在一些片段上相似,这就需要找到这些相似性的片段,和其相应的匹配方式。通常这样的分析就需要进行局部比对,而不是全局比对。全局比对与局部比对有什么不同呢。全局序列比对尝试找到两个完整的序列之间的最佳比对。而局部序列比对不必对两个完整的序列进行比对;可以在每个序列中使用某些部分来获得最大得分。两种比对采取不同的比对算法和策略,因此,同样的一段序列,采用全局比对和局部比对不同的比对方法结果也会有很大的不同。例如我们现在有两条序列S1和S2,如果采用全局比对,会得到这种比对效果,而采用局部比对,序列中间的GCG满足了最优比对。大家可以理解为,全局比对需要从全局出发,是需要全局达到最佳效果,而局部比对则不需要考虑全局,只要局部达到最佳效果即可。全局比对主要用来比较比较两个基因组之间的同源性,绘制共线性图等,另外,全局比对也常常用于基因组结构变异的检测。因为,局部比对的话,遇到大的空位往往就断开了,例如上面的例

  • nopCommerce 3.2新功能

    NopCommerce版本3.20,上周被释放,对于那些你谁还不熟悉新版本或刚经过脱脂发行说明我们的新功能的详细介绍。在nopCommerce3.20新功能的工作往往需要某些设置或语言资源的快速修改。因此,在我走之前到每个nopCommerce3.20特征的细节,我想指出你注意这两个视频如果你不熟悉这些小而有用的nopCommerce技巧:如何查找和更改nopCommerce资源如何查找和更改nopCommerce设置NopCommerce3.20有一组突出特点,并和一组小,小事化。我将负担所有的新功能,但之前,我们先从亮点那些我想提一提的未成年人的特点,我认为真的应该被列为重要的一个。这是一个管理面板,新的RTL支持。现在,如果你有其中被标记为RTL您nopCommerce管理将确实是在一个RTL方向显示的语言:让我们继续前进的突出特点。1。,将抓住每一个nopCommerce店老板的注意第一个特点是新的Facebook商店。现在,如果你去nopCommerce管理->配置->插件,你会看到一个新的Facebook插件:如果您单击Configure按钮,您将被带到一个页面

  • hdu 5187 zhx's contest

    zhx'scontest 1#include<algorithm> 2#include<iostream> 3#include<cstring> 4#include<cstdio> 5#include<cmath> 6usingnamespacestd; 7#defineLLlonglong 8LLn,m,p,tot; 9 10LLqcheng(LLa,LLb,LLp) 11{ 12LLbase=0,res=a; 13while(b) 14{ 15if(b&1)base=(base+res)%p; 16res=(res+res)%p;b>>=1; 17} 18returnbase; 19} 20 21LLqpow(LLa,LLb,LLmod) 22{ 23LLres=a%mod,base=1; 24while(b) 25{ 26if(b&1)base=qcheng(base,res,mod); 27res=qcheng(res,res,mod); 28b>>=1; 29} 30ret

  • Spring Boot读取Yml配置文件的3种方法

    1 基础用法,使用@Value注解直接注入配置信息 @Value("${spring.datasource.username}") privateStringname; 复制 2 使用注解@Autowired注入Environment类 @Autowired privateEnvironmentenvironment; Stringusername=environment.getProperty("spring.datasource.username"); 复制 3 定义一个工具类,使用@Component注解成为配置类,再继承ApplicationRunner重写run(),再注入Environment类获取配置,可以做到在任何地方随时随地获取配置信息 importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.boot.ApplicationArguments; importorg.springframework.boot.A

  • Effective Java 第三版——56. 为所有已公开的API元素编写文档注释

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java9API中的,所以JDK最好下载JDK9以上的版本。 56.为所有已公开的API元素编写文档注释 如果API要可用,就必须对其进行文档化。传统上,API文档是手工生成的,保持文档与代码的同步是一件苦差事。Java编程环境使用Javadoc实用程序简化了这一任务。Javadoc使用特殊格式的文档注释(通常称为doc注释),从源代码自动生成API文档。 虽然文档注释约定不是Java语言的正式一部分,但它们构成了每个Java程序员都应该知道的事实上的API。“如何编写文档注释(HowtoWriteDocCommentswebpage)”的网页[Javadoc-guide]中介绍了这些约定。虽然自Java4发布以来该页面尚未更新,但它仍然是一个非常宝贵的资源。Java9中添加了一个重要的文档标签,{@index};Java8中有一个,{@implSpec};Java5中有两个,{@literal}和{@code

  • 《代码阅读方法与实践》读书笔记二

      这几天,我阅读了《代码阅读方法与实践》一书的第五,六,七章节。五至七章所讲述的就是不那么基础的知识了。相比之前四章的复习,这三章更多的像学习。   第五章主讲控制流程。 递归应用的非常广泛,在数据结构,操作,类型,结构中,都可见递归的身影。递归不仅是一种方法,更是对整个程序流程的一个掌控。异常处理机制在程序中也是必不可少的,抛出异常,我们更能了解程序的错误,也更能清晰明白的看清程序的运行流程。try-catch语句是java常用的异常处理语句。并行运作的能力要受到硬件层和软件层的影响。在使用多线程时,最重要的一个问题就是共享资源的处理,这是我们在学习中值得深入探讨的一部分。接下来的信号一节探讨了信号处理器的功能,信号处理器对于一个应用程序来说,可以用做结尾,用做开始,用做各种需要的地方。一般处理信号的方式是,设置一个标志来相应信号,然后在方便的上下文中检查该标志。还有就是宏替换,宏是我们在c++学习中常用的一项,它可以解决不必要的重复赋值,节省许多重复工作。   第六章应对大型项目,讲解了一个大型项目主要的一些元素,阅读一个大型项目,第一主要的是先要看这个大型项目的架构,

  • day10作业

      多态作业   一、             选择题   1. 关于Java中的多态,以下说法不正确的为(B )。(选择一项)         A 多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性   B. 把子类转换为父类,称为向下转型,自动进行类型转换   C. 多态是指同一个实现接口,使用不同的实例而执行不同的操作   D. 继承是多态的基础,没有继承就没有多态   2. 编译运行如下Java代码,输出结果是(D)。(选择一项)   classBase{            &nb

  • 详解幻读、脏读和不可重复读

    一、简介 经常有面试官提出这么一个问题:什么是脏读、不可重复读和幻读? 关于这个问题,我们还得从数据库的管理系统说起,当数据库管理系统在写入或者更新数据的过程中,为了保证数据是正确可靠的,需要满足四个特性:原子性、一致性、隔离性和持久性,简称 ACID! Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,能被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入之前和写入之后的数据必须完全符合预期设定的结果。 Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(readcommitted)、可重复读(repeatable read)和串行化(Serializable)。 Durab

  • 【软件测试】关于停车系统的若干问题和反思

    周五上课时组成的六人小组对停车系统进行实际的测试分析,在分析中出现了很多问题,反思如下 1对整个停车系统的流程和框架不清楚导致分析开始时出现了比较混乱的局面,各成员众说纷纭没有条理; 2由于经验不足得到的测试内容和条目往往不够客观和全面,所以需要实际操作方面的提高; 3一个完整的系统包括多个部分和模块,不同模块需要采用不同的测试方法和测试用例,测试方法较为单一未能灵活运用知识。   课下查询资料得知一个基本的停车系统应具备的基本功能如下: 1 通行校验功能  2通行安全管理功能 3通行策略控制功能 4报警与告示功能 5车位管理功能 6等 在数据库的选择上: •应选用具有安全机制的关系型数据库管理系统; •所选用的数据库要求具有多种安全性认证模式,支持数据库之角色和用户管理功能,能够方便实现权限许可的验证、授予、修改和收回; •所选用的的数据库要求具有表、图表、索引、视图、存储过程、触发器等数据库组件; •所选用的数据库应具有数据完整性检查功能; •所选用的数据库应具有强大的数据备份与恢复功能,支持多种备份/恢复介质、多种备份/恢复类型,并要求应有联机备份

  • Mac sublime安装package controller

    https://packagecontrol.io/installation#st2 链接被墙了这个。我拿来放在这里。 ThesimplestmethodofinstallationisthroughtheSublimeTextconsole.Theconsoleisaccessedviathe ctrl+` shortcutorthe View > ShowConsole menu.Onceopen,pastetheappropriatePythoncodeforyourversionofSublimeTextintotheconsole.   sublimetext3: importurllib.request,os,hashlib;h='2915d1851351e5ee549c20394736b442'+'8bc59f460fa1548d1514676163dafc88';pf='PackageControl.sublime-package';ipp=sublime.installed_pac

  • 饿了吗开源组件库Element模拟购物车系统

    传统的用html+jquery来实现购物车系统要非常的复杂,但是购物车系统完全是一个数据驱动的系统,因此采用诸如Vue.js、angular.js这些框架要简单的多。饿了吗开源的组件库Element是基于Vue.js2.0实现的,该组件库封装了开发中需要的各种组件,并且提供了友好的API文档供开发者查看,下面就是我用Element实现的一个简单的购物车系统。(https://github.com/iwideal/MyGit/tree/master/HTML/shopping-cart) 首先,我们用Vue.js推荐的命令行工具来搭建项目骨架。 #创建一个基于webpack模板的新项目 $vueinitwebpack shopping-cart #安装依赖,走你 $cd shopping-cart $npminstall $npmrundev   这时候,生成的项目骨架如图: 这时候,我们要像maven一样,给项目添加依赖,在package.json文件中添加Element依赖: "dependencies":{ "element-ui":"^1.1.

  • 线性代数学习笔记(十)

    这一节讲两个相互独立的知识点,一个是马尔科夫矩阵,在概率分布上很有用处;一个是傅里叶级数的表示,将线代从有限维度拓展到函数空间中。 何为steadystate steadystate是指(当参数或者幂次)趋于无穷时,方程趋于某个稳定的解。注意,在nxn方阵A有n个独立的特征向量的前提下: 微分方程的通解是u(t)=eAtu(0)=SeΛtS-1u(0),变化的只有eΛt,所以其steadystate是:对角矩阵Λ每个元素(也就是A的所有特征值)都不大于0,这样eλt就会趋于0(λ<0)或者1(λ=0) 任意向量b都可拆分,b=c1*x1+c2*x2...,故,Akb=c1*λ1k*x1+c2*λ2k*x2...,其steadystate是:对于所有特征值,都有|λ|<=1 马尔科夫矩阵 马尔科夫矩阵是一个特殊的矩阵,满足两个条件(这两个条件意在表达一个概率分布,联系PageRank,每一列代表一个网站跳转到其他网站的概率): 每列之和=1 所有元素>=0 同时,马尔科夫矩阵还会有几个结论: λ1=1,其余所有λ绝对值都小于1 给出一个向量u0,各元素之和

  • SQL里面的变量的使用

    --局部变量--定义语法:--declare@名称类型=默认值declare@ageint=20--select@ageprint@age--输出方式:--select:输出为结果集,可以输出多列--print:一次只能输出一个值,以文本形式输出,每一次的输出单独占据一行select1,1print1+1print2go--变量可以同时定义多个:declare@ageint=20,@namenvarchar(50)='aa'printcast(@ageaschar(3))+@name --变量的赋值:如果通过独立子查询赋值,那么Set和select没有任何区别--set:直接赋值--select:通过查询赋值go--查询比张三丰年龄大的学员信息declare@timedatetime=(selectBornDatefromStudentwhereStudentName='张三丰')select*fromStudentwhereBornDate<@timegodeclare@timedatetime--set@time=(selectBornDatefromStudentwhere

  • 004_simulink建立子系统

      1.按照《001_创建simulink》文件内容修改     2.在选中的位置右键,选择createsubsystemselection     3.得到如图所示     4.双击subsystem进入子系统,点击箭头可以返回     5.取消子系统,右键子系统->subsystem&modelReference->ExpandSubsystem,把框删掉                  

相关推荐

推荐阅读