【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、求和…

c#中使用METest单元测试

METest是一个用于测试C#代码的单元测试框架。单元测试是一种软件测试方法,用于验证代码的各个单元(函数、方法、类等)是否按照预期工作。METest提供了一种简单而强大的方式来编写和运行单元测试。 TestMethod:这是一个特性&#…

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

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

odoo 按钮打印pdf报表

odoo打印一般是在动作里面进行的 所以此方法可用自定义按钮进行打印 <template id"report_sale_line_packing_template"> xxx </template><template id"report_sale_line_packing"><t t-call"web.basic_layout"><t …

maven的settings.xml和pom.xml配置文件详解

一、配置文件 maven的配置文件主要有 settings.xml 和pom.xml 两个文件。 其中在maven安装目录下的settings.xml&#xff0c;如&#xff1a;D:\Program Files\apache-maven-3.6.3\conf\settings.xml 是全局配置文件 用户目录的.m2子目录下的settings.xml&#xff0c;如&#…

C++分治算法------ 砍树

题目描述 伐木工人 Mirko 需要砍M米长的木材。对 Mirko 来说这是很简单的工作&#xff0c;因为他有一个漂亮的新伐木机&#xff0c;可以如野火一般砍伐森林。不过&#xff0c;Mirko 只被允许砍伐一排树。 Mirko 的伐木机工作流程如下&#xff1a;Mirko 设置一个高度参数H&…

大模型帮我梳理的docker命令

以下是一些常见的Docker命令&#xff1a; 1. docker run: 运行一个容器。示例&#xff1a;docker run <镜像名称> 2. docker pull: 下载一个镜像。示例&#xff1a;docker pull <镜像名称> 3. docker build: 构建一个镜像。示例&#xff1a;docker build -t <镜…

Linear FC FFN MLP层学习

一、Linear&#xff08;线性层&#xff09; 即神经网络的线性层&#xff0c;用于将输入映射到下一层的特征空间。它接受一个输入并与该层的权重的转置相乘。线性层没有激活函数。 公式&#xff1a; y x*W^T b&#xff0c;其中 W 是权重矩阵&#xff0c;b 是偏置向量。 pytorc…

每日一题411数组中两个数的最大异或值(哈希表、前缀树:实现前缀树)

数组中两个数的最大异或值(哈希表、前缀树&#xff1a;实现前缀树) LeetCode题目&#xff1a;https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/ 哈希表解法 本题使用哈希表方法主要运用到一个定理&#xff1a;异或满足算法交换律。即如果a^b c&#x…

【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/ 安装 双击安装 选择安装路径 使用 在文件夹中搜索 文件类型可以根据需要设置 如 *.* 说明是所有文件类型&#xff1b; *.tar 说明是所有文件后缀是是tar的文件‘&#xff1b;

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

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

JAVA 实现PDF转图片(pdfbox版)

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

企业之间的竞争,ISO三体系认证至关重要!

ISO三体系认证是指ISO 9001质量管理体系认证、ISO 14001环境管理体系认证、ISO 45001(OHSAS18001)职业健康安全管理体系认证。企业&#xff08;组织&#xff09;自愿申请、通过ISO三体系认证&#xff0c;并贯彻落实&#xff0c;确实能获益多多。 ISO 9001质量管理体系 我们经…

Scala的类和对象

1. 初识类和对象 Scala 的类与 Java 的类具有非常多的相似性&#xff0c;示例如下&#xff1a; // 1. 在 scala 中&#xff0c;类不需要用 public 声明,所有的类都具有公共的可见性 class Person {// 2. 声明私有变量,用 var 修饰的变量默认拥有 getter/setter 属性private var…

Ps:PSDT 模板文件

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

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

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