Mysql 5.7 创建索引官方解读

一、环境

Mysql 5.7

二、Mysql索引创建解读

1.概述

通常我们在使用CREATE TABLE时会创建所有的索引。索引的创建对于 InnoDB 表尤其重要,其中主键决定了数据文件中行的物理布局。

CREATE INDEX是另一种添加索引的方式,针对已经创建的表添加索引。注意,CREATE INDEX这种方式是被映射到 ALTER TABLE来创建索引。而且对于PRIMARY KEY不能使用CREATE INDEX,需要使用 ALTER TABLE

InnoDB支持虚拟列的二级索引。

当启用 innodb_stats_persistent设置后,每次在 InnoDB 表上创建索引后会运行 ANALYZE TABLE 语句。

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name[index_type]ON tbl_name (key_part,...)[index_option][algorithm_option | lock_option] ...

2.key part

key_part:col_name [(length)] [ASC | DESC]

(key_part1, key_part2, ...) 形式的索引规范创建具有多个key part的索引。索引键值是通过连接给定key part的值形成的。key part可以[ASC | DESC]结尾,可能在未来扩展用于指定索引值存储的升序或降序。但目前,在代码层面[ASC | DESC]参与解析,而索引值始终按升序ASC存储。

对于String列,可以创建仅使用列的值(关键的一部分值)的索引,使用 col_name(length) 语法来指定索引前缀长度。

key part需要注意一下几点:

1)可以对 CHAR、VARCHAR、BINARY 和 VARBINARY 的key part指定前缀。

2)必须对 BLOB 和 TEXT 的key part指定前缀。此外,BLOB 和 TEXT 列只能对 InnoDB、MyISAM 和 BLACKHOLE 表建立索引。

3)前缀的长度限制以byte来衡量。但是,CREATE TABLEALTER TABLECREATE INDEX句中索引规范的前缀长度被解释为:

非二进制字符串类型(CHARVARCHARTEXT)的char的个数;

和二进制字符串类型(BINARYVARBINARYBLOB)的byte的个数。

因此,在对一个multibyte的char set(MBCS)的非二进制字符串的列指定前缀长度时,要考虑到用byte衡量。

前缀支持和前缀长度(如果支持)取决于存储引擎。例如,对于InnoDB表,前缀最长可达 767 字节,如果启用了innodb_large_prefix选项,则最长可达 3072 字节。对于MyISAM表,前缀长度限制为 1000 字节。NDB存储引擎不支持前缀。

3.Mysql创建索引的SQL

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name[index_type]ON tbl_name (key_part,...)[index_option][algorithm_option | lock_option] ...key_part:col_name [(length)] [ASC | DESC]index_option: {KEY_BLOCK_SIZE [=] value| index_type| WITH PARSER parser_name| COMMENT 'string'
}index_type:USING {BTREE | HASH}algorithm_option:ALGORITHM [=] {DEFAULT | INPLACE | COPY}lock_option:LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}

4.InnoDB存储引擎支持的索引类型

InnoDB存储引擎支持的索引类型仅为BTREE。
在这里插入图片描述

5.InnoDB存储引擎的索引的特性

InnoDB存储引擎支持主键索引、唯一索引、普通索引使用BTREE的类型。但注意,对于主键索引而言,如果索引命中NULL值时,InnoDB存储引擎是不对NULL进行存储的,更不允许多个NULL值的。InnoDB存储引擎是不具备NULL和NOT NULL的索引检索。

而对于唯一索引、普通索引,如果索引命中NULL值是可行的,而且允许出现多个NULL值的情况。InnoDB存储引擎对这两种索引,是支持用索引进行NULL和NOT NULL的检索。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-otby8PzK-1656259347321)(/Users/zhanglf/Library/Application Support/typora-user-images/image-20220626234350011.png)]

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

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

相关文章

AspectJ切面自定义注解实现参数分组校验——基础概念(1)

AspectJ切面自定义注解实现参数分组校验——基础概念&#xff08;1&#xff09;一、环境二、validation-api源码解读2-1.Default源码解读2-2.valid源码解读2-3.Validation源码解读一、环境 maven 需要引入的依赖&#xff1a; <dependency><groupId>javax.valida…

主板跳线连接技巧图解

作为一名新手&#xff0c;要真正从头组装好自己的电脑并不容易&#xff0c;也许你知道CPU应该插哪儿&#xff0c;内存应该插哪儿&#xff0c;但遇到一排排复杂跳线的时候&#xff0c;很多新手都不知道如何下手。 钥匙开机其实并不神秘 还记不记得你第一次见到装电脑的时候…

为什么每个线程都需要创建一个栈?

有四个函数A、B、C、D&#xff0c;地址分别为100、200、300、400&#xff1b;有两个线程同时执行&#xff1b; 1&#xff09;假如只有一个栈 函数A在线程1中执行的时候&#xff0c;调用了函数B&#xff0c;将函数A中下一条指令的地址入栈&#xff08;104&#xff09;&#xff…

莎士比亚,肯尼迪总统,孔子,奥巴马总统,马克吐温,梵高,比尔盖茨等13位名人阔谈微博(中英双语版本)...

2019独角兽企业重金招聘Python工程师标准>>> 作者: ganzhijie 发表于 2010-09-02 10:11 原文链接 阅读: 21 评论: 0 John F. Kennedy-“Ask not what your twitter can do for you, ask what you can do for your twitter.”肯尼迪总统-“不要问你的微博能为你做些什…

centos 本地化配置

2019独角兽企业重金招聘Python工程师标准>>> 最近使用svn更新的时候经常出现一些奇怪的错误。经过查询得知是本地化环境没有配置&#xff0c;导致的。记录以下解决方法。 本人环境&#xff1a;centos 5.x 错误现象&#xff1a; [Copy to clipboard]View Code ERRORs…

MySQL连接查询

1.分类 MySQL连接可以分为&#xff1a; 1&#xff09;内连接 2&#xff09;外连接 左外连接右外连接全外连接 3&#xff09;自然连接 自然内连接(NATURAL JOIN)自然左外连接(NATURAL LEFT JOIN)自然右外连接(NATURAL RIGHT JOIN) 4&#xff09;交叉连接 2.语法 SELECT…

IP编址(包括网络地址和广播地址)

1.总述 IP地址使用32位二进数表示&#xff0c;每一个主机或路由器的接口都有全局唯一的IP地址&#xff08;NAT是个例外&#xff09;&#xff0c;它由网络号(NetID)和主机号(HostID)组成&#xff0c;它可以分为五类&#xff0c;如下&#xff1a; 2.地址划分 1&#xff09;A…

面试题:谈谈你对TCP的认识

一 TCP 1. 简介 首先&#xff0c;TCP是一个传输层协议&#xff0c;提供进程到进程之间的可靠性数据传输服务&#xff0c;还提供流量控制和差错控制等机制。 其次&#xff0c;TCP是面向连接的&#xff0c;其通信模式是全双工的&#xff1b;面向连接是指&#xff1a; 在发送数…

面试题:MySQL的innodb和myisam

一 Innodb 1. 简介 索引是一种排好序的用于快速查找的数据结构。 **根据官网手册InnoDB支持B-tree索引、聚簇索引(Clustered indexes)、全文索引(Full-text search indexes)、不支持hash索引&#xff08;InnoDB在内部利用哈希索引来实现其自适应哈希索引功能&#xff09…

用Markup Validation Service进行网页的W3C标准语法验证(c#)

W3C提供免费的Markup Validation Service&#xff0c;这是一个可以验证Html/XHtml文档的语法规范的公共服务。在某种程度上&#xff0c;有了它&#xff0c;我们再也不用为不能全面及时检测众多浏览器和五花八门的js/css不兼容性而痛不欲生了。^-^。 使用方法很简单&#xff0c;…

为什么MySQL索引更适合B+树而不是二叉树、B树

一 数据库为什么使用B树 1. 与二叉树相比 二叉树相比于顺序查找的确减少了查找次数&#xff0c;但是在最坏情况下&#xff0c;二叉树有可能退化为顺序查找。而且就二叉树本身来说&#xff0c;当数据库的数据量特别大时&#xff0c;其层数也将特别大。二叉树的高度一般是log_2…

MDOP套装之app-v安装使用及功能说明

最近尝试了瑞友天翼的虚拟化产品&#xff0c;感觉还不错&#xff0c;正好手上又下载了个mdop套装&#xff0c;顺手做了个app-v实验&#xff0c;其他实验教程后期继续推出。 一、服务端的安装 二、排序工具的安装 三、客户端的安装 四、使用排序工具虚拟化一个程序 五、发布虚…

容器技术之Dockerk8s知识笔记

本文带你快速了解Kubernetes与Docker 让你对容器与虚拟机的区别、Docker与k8s有一个快速的了解 目录 演变史容器与虚拟机的区别K8S与Docker概念DockerK8S演变史 传统部署时代&#xff1a; 早期&#xff0c;将单一的应用服务运行在物理服务器上&#xff0c;无法给服务器的应用…

Container.ItemIndex 获取reapeater行号

<div class"<%# (Container.ItemIndex)4?"class3":"class4"%>"></div>取到第五行的行号&#xff0c;用一个三元运算符来判断div的样式。 图中container.itemindex(container.ItemIndex-5)是不对的&#xff0c;最上面的代码才…

容器技术之快速了解K8S各抽象资源及组件架构

带你快速了解Kubernetes主要概念和组件架构。 Kubernetes的组件和架构比较多&#xff0c;功能也比较多。 如果详细探讨&#xff0c;每个Kubernetes组件都可以单独写篇博客详细讲解。 我们这里是快速了解&#xff0c;就写的相对比较简单一些。 主要是针对不熟悉Kubernetes的…

Python可视化神器之pyecharts

目录 概述安装参数实例 柱状图-Bar饼图-Pie折线图-Line散点图-scatter3D 柱状图-Bar3D仪表盘-Gauge雷达图-Radar词云图-WordCloud地理坐标系-Geo地图-Map概述 Pyecharts是一款将python与echarts结合的强大的数据可视化工具。使用 pyecharts 可以生成独立的网页&#xff0c;也…

腾讯的强大不是偶然,小马哥很强大

为什么80%的码农都做不了架构师&#xff1f;>>> 其实自己对于腾讯没什么好感&#xff0c;不过也没有太多的坏感&#xff0c;之前还有一篇日志&#xff0c;小批评了一下腾讯&#xff0c;今天看到小马哥写给内部员工的反思邮件。记录下两点提醒自己&#xff1a;对待敌…

计算机三级网络技术第一道大题 网络地址 主机号 直接广播地址 网络技术

加粗样式#计算机三级网络技术 ##网络地址&#xff0c;直接广播地址&#xff0c;主机号&#xff0c;子网中第一个可以IP地址&#xff0c;子网中最后一个可用IP地址 这是我在备考计算机三级网络技术中&#xff0c;写的几个例题&#xff0c;有哪里错的&#xff0c;还请大佬们帮忙纠…

SQL Server2008 附加数据库时出错

开机后附加数据库失败&#xff1a; 1.正常操作附加数据库。 右键单击sqlserver中的数据库&#xff0c;选择【附加】左击【添加】,选择文件路径,左击【确定】&#xff0c;之后弹出“附加数据库时出错”&#xff1a;确定&#xff0c;继续下一步进而查看原因&#xff0c;如图&…

j2me 学习资料

为什么80%的码农都做不了架构师&#xff1f;>>> 1:J2ME移动应用开发实战视频教程 http://www.pconline.com.cn/pcedu/videoedu/asp/0809/1425959.html 转载于:https://my.oschina.net/sunyh/blog/10534