mysql普通索引自增_mysql中联合索引中的自增列的增长策略

《深入理解MySQL》中一段介绍MyISAM存储引擎中自动增长列的示例,如下

1 mysql>create table autoincre_demo2 -> (d1 smallint not nullauto_increment,3 -> d2 smallint not null,4 -> name varchar(10),5 ->index(d2,d1)6 -> )engine=myisam;7 Query OK, 0 rows affected (0.03sec)8

9 mysql> insert into autoincre_demo(d2,name) values(2,'2'),(3,'3'),(4,'4'),(2,'2'),(3,'3')10 (4,'4');11 Query OK, 6 rows affected (0.00sec)12 Records: 6 Duplicates: 0 Warnings: 0

13

14 mysql> select * fromautoincre_demo;15 +----+----+------+

16 | d1 | d2 | name |

17 +----+----+------+

18 | 1 | 2 | 2 |

19 | 1 | 3 | 3 |

20 | 1 | 4 | 4 |

21 | 2 | 2 | 2 |

22 | 2 | 3 | 3 |

23 | 2 | 4 | 4 |

24 +----+----+------+

25 6 rows in set (0.00 sec)

该示例中重点是新建的表存储引擎为MyISAM,组合索引为,自动增长列为d1,但是d1在组合索引中的位置未处于最左。

疑问1:d1列是自动增长列,在插入数据的时候未指定其值,按原来的认知d1会自动增长,为什么会出现重复的值?

疑问2:为什么出现的是1、1、1、2、2、2?有何规律?

后来 查资料得知:

1.InnoDB表的自动增长列可以手工插入,但是插入的值如果是空或者 0,则实际插入的将是自动增长后的值。InnoDB联合索引中使用自增必须在最左,并且会每次自增,不在最左的时候不支持。

2MyISAM中使用联合索引的时候自动增长列可以不在最左,最左有时候也描述为索引第一列。

(1)最左位置:每次依然遵循自增

(2)不在最左的时候其值未知:是否增加受其前缀唯一性影响,唯一不增加,不唯一增加

这时候就可以解答疑问1了,原来自动增长列不在组合索引最左的时候,其值不是遵循自增的,但是产生了新的问题。

疑问3:上面所说的受其前缀唯一性影响,那么其前缀唯一性指的是什么?唯一不增加,不唯一增加又如何理解?

新建一个表,增加d3列,将组合索引扩展到3个,插入数据.

结果就是:前缀唯一性指的是组合索引的第一列,请注意一点,每个最左第一列的不相等的值对应的自动增长列是独立计算的,也就是每次新出现一个值那么该值对应的自动增长列的值就从1开始计算,该值第二次出现的时候自动增长列就加1,依次类推增加.

通过上述结论可以解释疑问2所示的问题.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring-boot基础概念与简单应用

1.spring家族 2.应用开发模式 2.1单体式应用 2.2微服务架构 微服务架构中每个服务都可以有自己的数据库 3.微服务架构应当注意的细节 3.1关于"持续集成,持续交付,持续部署" 频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分 可行方案(如…

邮箱客户端 gmail支持_如何联系Gmail支持

邮箱客户端 gmail支持Although you may not be able to directly contact Gmail support without subscribing to G Suite for businesses, there are a couple of ways to get the answers you’re looking for online. Let’s look at how you can get help with your Gmail …

jstorm mysql_zookeeper,kafka,jstorm,memcached,mysql流式数据处理平台部署

一.平台环境介绍:1.系统信息:项目信息系统版本:Ubuntu14.04.2 LTS \n \l用户:*****密码:******Java环境:openjdk-7-jre语言:en_US.UTF-8,en_US:en磁盘:每台vda为系统盘(5…

dock模拟macos教程_将macOS首选项窗格添加到您的Dock中以快速访问

dock模拟macos教程macOS: Is there a certain Preference pane you access constantly? You can quickly add it to your dock. macOS:是否存在您经常访问的特定“首选项”窗格? 您可以将其快速添加到扩展坞中。 Brett Terpstra, writing for Lifehacke…

怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...

一、第一节:一条sql查询语句是怎样执行的5.5.5版本以后,默认使用存储引擎为InnoDB不使用查询缓存,MySQL8.0没有查询缓存这个功能总体来说:MySQL分为service层和存储引擎层1)service层包括:连接器、分析器、优化器、执行…

mysql qt自增_mysql自增设置

MySQL设置自增字段的相关语句:alter table album change ALBUM_ID ALBUM_ID bigint not null auto_increment;alter table album auto_increment1;创建:mysql>create table cc(id int auto_increment,name varchar(20),primary key(id));mysql>create table c…

staem被盗_如何检查照片是否被盗

staem被盗Photos and other images get stolen all the time online. Someone takes a photo from the photographer’s website or social media channels and uses it for their own needs. This is completely illegal and happens to me all the time here at How-To Geek.…

数据库、表、表内容增删改查

数据库和表的创建 用户的增 删 改 查 增 create user 用户名192.168.16.% identified by ‘123’;创建一个账户,并设置密码,可不设密码 grant all on *.* to 用户地址; #给账户授权 flush privileges; #刷新授权立即生效 创…

立即通过Xumo.TV在线观看免费电视

Xumo.TV brings the channel surfing experience to cord cutters, with content from The History Channel, MSNBC, Fox Sports, and more. And it’s free. Xumo.TV将频道浏览体验带给剪线钳,其中包括The History Channel,MSNBC,Fox Sports…

NOIP2009靶形数独

试题描述小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低。但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的“靶形数独”&…

mysql 1005 - can't create table_关于创建数据表报错一例(ERROR 1005 Can’t create table (errno: 121))...

问题描述曾遇到创建数据表报错问题,报错如下:ERROR 1005 (HY000) at line 18: Cant create table db1.t2 (errno: 121)通过日志查看有一条记录InnoDB: Error: table db1.t2 already exists in InnoDB internal可见要创建的这个表已经存在,导致…

h5输出文字write_免费下载:Write是用于手写的文字处理器

h5输出文字writeWindows/Mac/Linux/Android: Love the feel of writing by hand, but wish you could use features like copy/paste and undo? Write is a free tool that lets you do just that. Windows / Mac / Linux / Android:喜欢手写的感觉,但是…

11. IDEA 在同一工作空间创建多个项目

1.创建项目 二.、创建工作空间 JavaWorkspace 1、File-> New Project -> 创建工作空间 JavaWorkspace,并 顺便创建项目 JavaOne 2.创建第一个项目后形成的目录结构如下 三、在已经创建好的工作空间中创建第二个项目 1、File -> New Module -> 创建项目 …

winform 线程监听两个目录下的文件_vb.net 利用.net自带的GZipStream压缩或者解压文件的代码,不需要任何第三方控件...

网上很少有用VB写的压缩文件的代码,但是,在网络传输,文件下载,打包发布等等方面的需求又比较多,所以,借鉴了一下C#代码的例子,改造成了VB用的类。另外加上了多层文件夹压缩解压。但是,因为时间有…

什么是“ rpcsvchost”,以及为什么它在Mac上运行?

You find something called rpcsvchost while using Activity Monitor to see what’s running on your Mac. What is this process, and should you be worried? In a word, no: rpcsvhost is a core part of macOS. 在使用“活动监视器”查看Mac上正在运行的内容时&#xff…

自定义异常禁用异常堆栈_如何在Mac上禁用或自定义自动更正

自定义异常禁用异常堆栈Sometimes, autocorrect gets it wrong, replacing a word you meant to type with something completely different. You can customize it to fix these issues or disable it altogether. 有时候,自动更正会把它弄错,用完全不同…

控制dcom程序使用端口_使用VS Code调试.net控制台应用程序的方法

本文由 比特飞 原创发布,欢迎大家踊跃转载。转载请注明本文地址:https://www.byteflying.com/archives/6928。1、概述本文向大家介绍使用Visual Studio Code调试.net控制台应用程序的方法。2、方案首先在创建好一个控制台应用程序,再在扩展中…

omnipay支付--支付宝支付

最近负责的项目事关支付宝APP支付 也踩了一些坑 这边记录下 以下代码基于laravel框架下: 生成APP支付参数: $gateway $this->getGateway();$request $gateway->purchase();$request->setBizContent([subject > ,//产品描述out_trade_no > ,//本地订单号…

4khz的带宽是指什么意思_扬声器和耳机的Hz-KHz范围是什么意思?

4khz的带宽是指什么意思If you’ve looked at high-end headphones or speakers, you’ve probably noticed numbers on the spec sheet that read something like “20Hz-20KHz.” What do these numbers mean? 如果您看过高端耳机或扬声器,则可能已经注意到规格表…

mysql两种引擎的适用场景_MySQL两种引擎的区别和应用场景

Innodb引擎Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在…