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所示的问题.
mysql普通索引自增_mysql中联合索引中的自增列的增长策略相关推荐
- mysql联合索引顺序调整_MySQL 关于联合索引的字段顺序规则讨论
联合索引的顺序,难道不是哪个查询条件最多用就放在前面的吗? 比如商品有三个分类A,B,C,类似「界门纲目科属种」那样,越左类别越大.还有一个是商品来源D,不一定会用于查询条件中. 举个例子,A代表衣服 ...
- mysql索引命名规范_mysql使用规范-索引规范
(1)单张表中索引数量不超过5个. (2)单个索引中的字段数不超过5个. (3)索引名必须全部使用小写. (4)非唯一索引按照"idx_字段名称[_字段名称]"进用行命名.例如id ...
- mysql中联合索引abc 使用bac_mysql 联合索引
mysql 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). ...
- mysql复合索引优点_mysql 联合索引有什么好处? 联合索引的意义
mysql 里创建'联合索引'的意义 问题? 因为什么需求,要创建'联合索引'?最实际好处在于什么?如果是为了更快查询到数据,有单列索引不是Ok?为什么有'联合索引'的存在? 简单的说有两个主要原因: ...
- mysql建立联合索引_mysql之联合索引
mysql之联合索引测试: 前期准备: 建立联合索引? CREATE TABLE `test` ( `id` bigint(16) NOT NULL AUTO_INCREMENT, `aaa` var ...
- MySQL中联合索引问题,
经常被问到,如果创建一个联合索引(a,b,c),那么那些查询会用到索引. 首先,创建这个联合索引相当于创建了a,(a,b),(a,b,c)三个索引,且=可以乱序. 问的比较多的是(a,c),(b,c) ...
- mysql 什么时候用单列索引?什么使用用联合索引?
作者:范孝鹏 链接:https://www.zhihu.com/question/40736083/answer/88191544 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- mysql辅助索引非叶子节点_Mysql的聚集索引与辅助索引
Mysql数据库中的B+树索引可以分为聚集索引和辅助索引(非聚集索引).本文将介绍一下两者. 聚集索引 聚集索引:指索引项的排序方式和表中数据记录排序方式一致的索引(这里不懂先放着,一会举例),每张表 ...
- MySQL索引效率对比_mysql下普通索引和唯一索引的效率对比
抓的这几个都是第一次执行的,刷了几次后,取平均值,效率大致相同,而且如果在一个列上同时建唯一索引和普通索引的话,mysql会自动选择唯一索引. 谷歌一下: 唯一索引和普通索引使用的结构都是B-tree ...
最新文章
- python人工智能计算器_招募:基于python的召唤师全时段全技能(含均值AI)计算器全程测试...
- SOA、SOAP、RPC、REST、DUBBO的区别与联系
- python的编程模式-Python设计模式:为了整洁又时尚的代码
- asp.net(c#) linkbutton CommandArgument
- USB hub(221)
- numpy.random详解
- Runtime底层原理--动态方法解析、消息转发源码分析
- 软件测试作业2:在敏捷宣言遵循的12条原则中挑选1条你感兴趣的原则进行风险评估
- MySQL 中的重做日志,回滚日志以及二进制日志的简单总结
- python抢货程序_Python自动化xpath实现自动抢票抢货代码示例
- day7——集合,深浅copy
- 99+好友共同关注,公众号推荐
- 高通宣称其语音识别系统准确率高达95%
- 【回文串5 重点+动态规划】LeetCode 132. Palindrome Partitioning II
- SID与域信任不一致导致AD无法登陆/server2003系统封装
- 20. 为包含指针的关联容器指定比较类型
- 广联达软件未检测到加密锁请重新插入加密锁或网络服务器
- matlab 连续傅里叶变换,matlab快速傅里叶变换.ppt
- 实现uniapp 内部下载apk文件和安装
- 19张网络工程师必看的思维导图
热门文章
- 做人:失信是最大的破产!
- linux子系统 重置,浅析win10系统重置Linux子系统的设置方法
- 链表定义、链表的插入、链表的删除、链表的查找
- react 给一个引用的组件添加新属性_高阶组件在React中的应用
- swift自行车品牌介绍_品牌101:简介
- 平面设计师和ui设计师_平面设计师为什么要享受所有乐趣?
- (原創) 如何在Ubuntu設定P7010的1280 x 768解析度? (OS) (Linux) (Ubuntu) (NB) (P7010)
- 聊聊storm的PartialKeyGrouping
- 用uid分库,uname上的查询怎么办?
- 用maven profile实现环境配置切换