Mysql中索引的分类、增删改查与存储引擎对应关系

场景

Mysql中存储引擎简介、修改、查询、选择:

Mysql中存储引擎简介、修改、查询、选择-CSDN博客

上面介绍Mysql的存储引擎。

下面介绍索引的分类和使用。

注:

博客:
霸道流氓气质-CSDN博客

实现

Mysql中索引的分类

1、普通索引和唯一索引

普通索引:MySQL 中的基本索引类型,允许在定义索引的列中插入重复值和空值。

唯一索引::索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一 。

主键索引是一种特殊的唯一索引,不允许有空值。

2、单列索引和组合索引

单列索引:即一个索引只包含单个列,一个表可以有多个单列索引。

组合索引:在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时索引才会被使用。

使用组合索引遵循最左前缀集合。

3、全文索引

全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。

全文索引可以在 CHAR VARCHAR 或者 TEXT 类型的列上创建。在 MySQL中只有MyISAM存储引擎支持全文索引。

4、空间索引

空间索是对空间数据类型的字段建立的索引,MySQL 中的空间数据类型有4种,分别是GEOMETRY POINT LINSTRNG POLYGON。

MySQL 使用 SPATIAL关键字进行扩展,使得能够用与创建正规索引类似的语法创建空间索引。

创建空间索引的列必须将其声明为NOT NULL,空间索引只能在存储引擎为MyISAM的表中创建。

Mysql中创建和查看索引

Mysql在创建表时创建索引

在使用 CREATE TABLE 创建表时 除了可以定义列的数据类型以外,还可以定义主键约束、外键约束或者唯一性约束,

而不论创建哪种约束 在定义约束时相当于在指定列上创建了一个索引。

创建和查看普通索引

CREATE TABLE fruit (id INT NOT NULL,NAME VARCHAR ( 50 ) NOT NULL,price DECIMAL ( 8, 2 ) NOT NULL,city VARCHAR ( 100 ) NOT NULL,
INDEX ( city )
);

该语句执行完毕之后,使用SHOW CREATE TABLE查看表结构。

SHOW CREATE TABLE fruit;

插入两条测试数据

INSERT INTO fruit VALUES(1,'苹果',5.20,'北京');
INSERT INTO fruit VALUES(2,'香蕉',2.20,'上海');

使用EXPLAIN 语句查看索引是否正在使用

EXPLAIN SELECT * FROM fruit WHERE city = '北京';

输出结果

1 SIMPLE fruit  ref city city 302 const 1 100.00 

可以看到,possible_keys key的值都为city,在查询时使用了索引。

Mysql如何在已经建立的表上建立索引

方法1:

使用alter table语句 后面是索引名(字段名)

ALTER TABLE fruit add index city(city);

方法2:

使用create index 语句 前面是索引名,后面是字段名

CREATE INDEX city on fruit(city)

Mysql中创建和查看唯一索引

上面新建的是普通索引,唯一索引与前面的普通索引类似,不同的是索引列的值必须唯一,但允许有空值。

如果是组合索引,则列值的组合必须唯一。

CREATE UNIQUE INDEX id_index ON fruit(id);

Mysql中创建和查看多列索引

组合索引是在多个字段上创建一个索引。

CREATE INDEX group_index on fruit(id,name,price);

可以验证如果查询时包含了id则使用了索引,否则不使用索引

EXPLAIN SELECT * FROM fruit WHERE id='1' AND city = '北京';EXPLAIN SELECT * FROM fruit WHERE name='苹果' AND city = '北京';

Mysql中创建和查看全文索引

全文索引可以用于全文搜索。只有 MyISAM 存储引擎支持全文索引 ,从MySQL 5.6开始InnoDB也支持全文索引。

 并且只为 CHAR VARCHAR TEXT列。全文索引只能添加到整个字段上,不支持局部(前缀)索引。

CREATE FULLTEXT INDEX ft_index ON fruit(name);

全文索引非常适合大型数据集,对于小的数据集, 它的用处可能比较小。

关于存储引擎,常用sql

-- 查看系统所支持的引擎类型
SHOW ENGINES;
-- 查看当前默认的存储引擎
SELECT @@default_storage_engine;
-- 查看特定库中所有表的存储引擎
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'ry-vue-studydemo';
-- 查看单个表的存储引擎
SHOW TABLE STATUS LIKE 'fruit';
-- 更改表的存储引擎
ALTER TABLE fruit ENGINE=MyISAM;
ALTER TABLE fruit ENGINE=InnoDB;

Mysql中删除索引

1、使用DROP INDEX 删除索引

DROP INDEX city ON fruit;

2、使用ALTER TABLE 删除索引

ALTER TABLE fruit DROP INDEX ft_index;

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

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

相关文章

算法力扣刷题记录 四十三【最大、最小深度问题】

前言 本文学习树的深度问题:二叉树(N叉树)最大深度、最小深度; 记录 三十九【层序遍历模版应用二】中解决过二叉树的最大深度和最小深度题目。思路是按层遍历: 最大深度,相当于层序遍历结束;…

ZBLOG程序怎么天收录?本人亲自试过请看以下教程(zblog怎么样)

您为管理员组,请查看下方隐藏内容! 先去ZBLOG官网下载ZBLOG程序 直达地址https://www.zblogcn.com/ 安装到宝塔里 安装好了之后打开zblog的后台 点开应用中心搜索CMS自适应资讯主题免费 安装即可 安装了之后配置主题内容 有经验者可以去吧动态改成…

周鸿祎关于2024年AI看法

1、2024年初AI三件大事 谷歌推出Gemini新版本,支持超过100万个token窗口 英伟达推出ChatWithRTX ,要把每个人的电脑都折腾成一个私有大模型 Sora,OpenAI新推出的一个文生视频的新模型。 2、2024年大模型发展十大趋势判断(周鸿&#xf…

pnpm9.5.0(catalog协议)

catalog(目录协议) 目录是工作区功能,用于将依赖版本范围定义为可重用常量,目录中定义的常量可以在package.json中使用, 结合 pnpm-workspace.yaml使用 定义pnpm-workspace.yaml packages:定义多仓库 packages:- packages/*cata…

Spring 外部jar包Bean自动装配

Spring 外部jar包Bean自动装配 背景介绍 公共代码模块被作为jar包引入业务项目,前者定义的bean即使添加了Component注解由于不会被扫描到也就无法被Spring管理。此处通过Spring SPI机制来完成 使用 spring.factories 在外部 jar 包中创建 spring.factories 文件&a…

Flink异常:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

【逆向基础】十、工具分享之DIE(Detect It Easy)

一、简介 DIE&#xff08;Detect It Easy&#xff09;是一款可以轻松检测PE文件的程序&#xff1b;其主要作用是查壳&#xff0c;并将pe文件的内容解析出来&#xff0c;包括PE文件中包含的导入函数、导出函数的名称及地址&#xff0c;入口函数地址等&#xff0c;是技术人员分析…

lua 脚本语言 : 基础到高级语法

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

JupyterNotebook中导出当前环境,并存储为requirements.txt

​使用Anaconda管理Python环境时&#xff0c;可以轻松地导出环境配置&#xff0c;以便在其他机器或环境中重新创建相同的环境。可以通过生成一个environment.yml文件实现的&#xff0c;该文件包含了环境中安装的所有包及其版本。但是&#xff0c;常常在一些课程中JupyterNotebo…

Python基础-循环语句

本篇针对有c语言或其他语言编程基础的&#xff0c;主要展示Python循环语句编程的一些不同语法。 先来看一个简单的while循环案例&#xff0c;求1~100累加的和 。 i1 s0 while i<100:sii1 print(s) while循环练习 生成1~100的随机数&#xff0c;循环猜测直到猜对&#xf…

微信小程序毕业设计-学习资料库系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

前端高频面试算法题之二分查找

这道二分查找是一道比较基础的题目&#xff0c;一些中小厂在面试无经验或低年限经验的同学的时候考察的概率比较大。 题目描述 LeetCode 二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums …

ProbTS:时间序列预测的统一评测框架

编者按&#xff1a;如今&#xff0c;时间序列预测在健康、能源、商业、气候等多个行业发挥着至关重要的作用。它不仅影响着相关资源的分配和调度&#xff0c;还影响着行业的管理和运营决策。但是现有的时间序列预测方法通常缺乏对基础预测需求的全面考虑&#xff0c;无论是经典…

JavaScript青少年简明教程:开发工具与运行环境

JavaScript青少年简明教程&#xff1a;开发工具与运行环境 JavaScript是一种基于对象和事件驱动且具有安全性能的脚本语言。使用它和HTML结合可以开发出交互式的Web页面。 脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言。脚本通常是解释执行而非编…

阿里巴巴矢量图标库使用

阿里巴巴矢量图标库官网 添加图标到购物车 悬浮到图标上面会有个购物车icon,点击一下就可以添加购物车了 添加图标到项目 添加完购物车后,右上角会有当前在购物车的数量,点击右上角购物车icon,在新弹窗内点击添加至项目,选择添加到哪个项目(没有项目就创建一个),点击完成,…

Milvus 核心设计(1) ---- 数据一致性的等级及使用场景

目录 背景 Milvus的数据一致性 设置数据一致性等级 等级类型 PACELC定理 level 详细解释 Strong Bounded staleness Session Eventually 总结 背景 分布式上的可扩展性是个比较重要的concept。Chroma 核心之前写过了,他的最大优势在于轻量级且好用。Milvus相对Ch…

初识Spring Web MVC

1. 什么是 Spring Web MVC&#xff1f; Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc)&#xff0c;但它通常被称为"SpringMVC".Servlet&am…

省市县下拉框的逻辑以及多表联查的实例

2024.7.12 一. 省市县的逻辑开发。1、准备&#xff1a;1.1. 要求&#xff1a;1.2 数据库表&#xff1a; 2. 逻辑&#xff1a;3. 方法3.1 创建实体类3.2 数据访问层3.3 实现递归方法3.4 控制器实现3.5 前端处理 二、多表联查&#xff08;给我干红温了&#xff09;1. 出现了问题2…

Mac VSCode 突然闪退、崩溃、打不开了

vscode 1.90.2版本下载&#xff0c;刚上传还在审核中 1、 思路历程 VSCode 作为前端常用开发工具&#xff0c;其重要性就不一一描述了。 所以 VSCode 突然打不开了&#xff0c;真的是让我一脸懵逼。 本来以为问题不大&#xff0c;于是 &#xff1a; 1、重启了一下VSCode 2、…

2024最新最全面的软件测试自动化面试题(含答案)

1.如何把自动化测试在公司中实施并推广起来的&#xff1f; 选择长期的有稳定模块的项目 项目组调研选择自动化工具并开会演示demo案例&#xff0c;我们主要是演示selenium和robot framework两种。 搭建自动化测试框架&#xff0c;在项目中逐步开展自动化。 把该项目的自动化…