【MySQL】索引(下)

文章目录

  • 1. 普通索引
  • 2. 索引操作
    • 创建主键索引
    • 查询索引
    • 删除索引
    • 唯一索引的创建
    • 删除唯一键索引
    • 普通索引的创建
    • 全文索引

1. 普通索引

MySQL除了会默认建立主键索引,也可能会按照其他列信息建立的索引,一般这种索引称为 普通索引
对于 储存引擎 myisam,普通索引和主键索引是没有区别的


以第二列作为键值,构建B+树,可以发现 与主键构建的B+树基本没有区别
因为两者叶子节点都是存储 对应数据的地址


使用储存引擎以 innodb, 建立普通索引

依旧按照指定列作为键值,构建B+树
但是 由于 储存引擎 为 innodb , 所以 叶子节点存储 数据
此时叶子节点 存储的数据为 构建索引的键值 对应的主键值


(如果此时按照第三列构建索引,此时叶子节点 就会存储 对应第三列的主键值 )

2. 索引操作

创建主键索引

第一种方式
在创建表的时候,直接在字段名后 指定 primary key
create table user1(id int primary key );

第二种方式
在创建表的最后,指定某列或者某几列为主键索引
create table user2( id int, name varchar(20),primary key(id) );

第三种方式
创建表后再添加主键
create table use3(id int, name varchar(20));
alter table user3 add primary key(id);


查询索引

查询test1表,发现id是具有主键约束的


输入 show index from 表名; 查询索引
key_name表示索引名称为primary ,column_name 表示打在 id这一列上
index_type 表示 索引类型为 B+树


删除索引

输入 alter table 表名 drop pimay key; 删除对应的主键索引
此时发现test1表中的id 没有主键约束了


唯一索引的创建

第一种方式
在表定义时,在某列后直接指定unique唯一属性
create table user4( id int primary key, name varchar(20) unique);

第二种方式
创建表时,在表后面指定某列或某几列为 unique
create table user5(id int primary key, name varchar(20),unique(name));

第三种方式
在表创建好后,添加 某列为unique
create table user6(id int primary key ,name varchar(20));
zalter table user6 add unique(name);


以第三种方式为例,刚开始test1表中的name只是不为空,再对name添加唯一索引后
test1表 的 name 就有 唯一键 约束了


再次输入 show index from test1 \G 查看test1表的索引

key_name 表示 索引的名称
column_name 表示 索引以name为主
index_type 表示 索引的类型 为B+树


删除唯一键索引

alter table 表名 drop index 索引名;
索引名 是 show keys feom 表名中的 key_name 字段


输入 alter table test1 drop index name; 即可删除test1表中name 中的唯一键约束


普通索引的创建

第一种方式
create table user8(id int primary key,
name varchar(20),
email varchar(30),
index(name) –在表的定义最后,指定某列为索引
);


第二种方式
create table user9(id int primary key, name varchar(20), email
varchar(30));
alter table user9 add index(name); –创建完表以后指定某列为普通索引


输入 alter table test1 add index(name); 即将name变为普通索引


第三种方式
create table user10(id int primary key, name varchar(20), email
varchar(30));
create index idx_name on user10(name)– 创建一个索引名为 idx_name 的索引


输入 create table index myindex on test1(name);
在test1表中name列 创建一个索引名为 myindex 的索引


输入 show index from test1 \G 发现 key_name(索引的名称) 为 myindex


输入 alter table test1 drop index myindex; 就可以把myindex对应的索引名删除掉

全文索引

当对文章字段 或有大量文字的字段进行检索时,会使用到全文索引
若要使用全文索引,则要求表的储存引擎 为 MyISAM
并且默认的全文索引支持 英文,不支持中文

在表中添加 FULLTEXT ,让对应的列具有全文索引


创建一张表 articles ,内部包含 约束为 主键 并且 是自增长 的id 、200个字符 的title 、大文本的body
并将 title 和body 列 进行 全文索引


由于表中的id 是自增长的,所以只需插入 title 和 body 数据即可


输入 select * from articles; 查看当前表信息


想要在body列内容做搜索
如:查询articles表中 是否有 database 存在

输入 select * from articles where bidy like ‘database%’; 使用 like 进行模糊匹配 查询包含 database 及 带有后面的内容


使用 关键字 explain ,可以查看 是否使用索引

id 作为 这次请求的 id值,序号值 一般越大,越先执行
select_type 表示 查询类型 SIMPLE 表示 简单查询
table 表示 表名
type 表示 查询 方式 all 表示 全部遍历
key 表示 索引 NULL表示 没有使用索引查找


使用全文索引

输入 select * from articles where match(title,body) against(‘database’);
match 表示 设置条件
against 表示 匹配


再次使用 explain 查看是否使用索引

(type)遍历方式 为 使用全文索引(fulltext)
(key)索引 为 title ,表示使用 title 这个全文索引 进行查找

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

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

相关文章

伊朗网络间谍组织针对中东金融和政府部门

导语 近日,以色列网络安全公司Check Point与Sygnia发现了一起针对中东金融、政府、军事和电信部门的网络间谍活动。这一活动由伊朗国家情报和安全部门(MOIS)支持的威胁行为者发起,被称为"Scarred Manticore"。该组织被认…

在Linux上通过NTLM认证连接到AD服务器(未完结)

这篇文章目前还没有实现具体的功能,只实现了明文登录,因为我缺少一些数据,比如通过密码生成hash,以及通过challenge生成response,我不知道怎么实现,因此这篇文章也是一个交流的文章,希望大佬看见…

【实战Flask API项目指南】之一 概述

实战Flask API项目指南之 概述 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握Flask在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 小菜是一个Python编程爱好者,他目前…

蓝桥杯 (C++ 求和 等差数列 顺子日期 灌溉)

目录 1、求和 题目: 思路: 代码: 2、等差数列 题目: 思路: 代码: 3、顺子日期 题目: 思路: 代码: 4、灌溉 题目: 代码: 1、求和…

KaiwuDB 内核解析 - SQL 查询的生命周期

一、概述 KaiwuDB 内核解析系列共分上下两部分,本文是该系列的第一部分,主要涵盖了网络协议到 SQL 执行器,解释 KaiwuDB 如何执行 SQL 查询,包括系统各个组件的执行路径(网络协议、SQL 会话管理、解析器、执行计划及优…

【Spring MVC】Spring MVC框架的介绍及其使用方法

目录 一、MVC模式 1.1 MVC模式的发展 1.1.1 Model1 模型 1.1.2 Model2 模型 1.2 MVC模式简介 1.模型(Model) 2.视图(View) 3.控制器(Controller) 二、Spring MVC模型简介 三、Spring MVC 六大核心组件 3.1 六大组件简介 1.前端控制器 DispatcherServlet&#xff08…

Notepad++下载、使用

下载 https://notepad-plus-plus.org/downloads/ 安装 双击安装 选择安装路径 使用 在文件夹中搜索 文件类型可以根据需要设置 如 *.* 说明是所有文件类型; *.tar 说明是所有文件后缀是是tar的文件‘;

多个PDF发票合并实现一张A4纸打印2张电子/数电发票功能

python教程79--A4纸增值税电子发票合并打印_python 打印 发票设置_颐街的博客-CSDN博客文章浏览阅读7.9k次。接上篇https://blog.csdn.net/itmsn/article/details/121902974?spm1001.2014.3001.5501一张A4纸上下2张增值税电子发票实现办法。使用环境:python3.8、ma…

JAVA 实现PDF转图片(pdfbox版)

依赖: pdf存放路径 正文开始: pdf转换多张图片、长图 Test void pdf2Image() {String dstImgFolder "";String PdfFilePath "";String relativelyPathSystem.getProperty("user.dir");PdfFilePath relativelyPath &qu…

Ps:PSDT 模板文件

自 Photoshop CC 2015.5 版以后,Ps 中新增了一种文件格式:.PSDT。 说明: PSD、PDD、PSDT 都是 Ps 的专用文件格式,需要继续在 Ps 中进行编辑的文件可存为此类格式。 PSD Photoshop document Photoshop 默认文档格式,支…

选择适合你的办公桌:提高工作效率的关键

​在如今的数字时代,越来越多的人将办公桌移到家里或办公室。但是,如何选择适合你的办公桌可能是个挑战。不同的工作需要和工作空间大小会影响你的选择。下面是一些简单的建议,帮助你找到适合你的办公桌,提高工作效率。 首先&…

使用pytorch处理自己的数据集

目录 1 返回本地文件中的数据集 2 根据当前已有的数据集创建每一个样本数据对应的标签 3 tensorboard的使用 4 transforms处理数据 tranfroms.Totensor的使用 transforms.Normalize的使用 transforms.Resize的使用 transforms.Compose使用 5 dataset_transforms使用 1 返回本地…

@RunWith(SpringRunner.class)注解的作用

通俗点: RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类,比如Autowired注入的类,有了RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效 官方点: RunWith 注解是JUnit测…

【数据结构】深入浅出理解快速排序背后的原理 以及 版本优化【万字详解】(C语言实现)

快速排序 快速排序递归实现前言一、Hoare版本(一)算法运行图例(二)算法核心思路(三)算法实现步骤(1)单趟(2)多趟 (四)码源详解 递归实…

单元测试反射注解

单元测试 就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。 咱们之前是如何进行单元测试的?有啥问题 ? Junit单元测试框架 可以用来对方法进行测试,它是由Junit公司开源出来的 具体步骤 Junit框架的常见注解…

『亚马逊云科技产品测评』活动征文|占了个便宜,12个月的免费云服务器

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 在群里看到有小伙伴说亚马逊可以免费试用服务器,这种好事不得…

Jenkins自动化部署简单配置

下载安装jenkins 安装Jenkins步骤 点击Next的时候会有jdk版本跟Jenkins版本不符合的情况 1. 看下任务管理器内Jenkins服务是否启动,在浏览器里面输入localhost:2023(端口号是安装时输入的) 2. 根据路径找到放置密码的文件(C…

Yolov8改进CoTAttention注意力机制,效果秒杀CBAM、SE

1.CoTAttention 论文地址:2107.12292.pdf (arxiv.org) CoTAttention网络是一种用于多模态场景下的视觉问答(Visual Question Answering,VQA)任务的神经网络模型。它是在经典的注意力机制(Attention Mechanism&#xf…

自动化测试中验证码问题如何解决?

经常会被问到如何解决验证码的问题,在此记录一下我所知道的几种方式。 对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算…

让SOME/IP运转起来——SOME/IP系统设计(上)

什么是SOME/IP? SOME/IP(Scalable service-Oriented MiddlewarE over IP)是AUTOSAR应用层的协议,是基于IP协议的面向服务的可拓展性的中间件。 SOME/IP中主要定义了: 数据的序列化:SOME/IP支持的数据类型…