首页 > 数据库 >Mysql中索引的分类、增删改查与存储引擎对应关系

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

时间:2024-07-08 16:12:24浏览次数:15  
标签:city 全文索引 改查 索引 fruit Mysql 增删 TABLE

场景

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

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140269624

上面介绍Mysql的存储引擎。

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

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

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;

标签:city,全文索引,改查,索引,fruit,Mysql,增删,TABLE
From: https://www.cnblogs.com/badaoliumangqizhi/p/18290082

相关文章

  • MYSQL常用SQL语句
    数据库概述1、什么是数据库管理系统?数据管理系统是一种在数据库中组织和存储数据的软件应用程序。常见的数据库管理系统分为两大类:关系型数据管理系统和非关系型管理系统关系型数据库:MySQL、Oracle、SQLServer、Access非关系型数据库:MongoDB2、什么是数据库?数据库(Databas......
  • Mysql中存储引擎简介、修改、查询、选择
    场景数据库存储引擎数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据的操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在许多数据库管理系统支持多种数据引......
  • Docker部署Django+MySQL+Redis+Nginx+uWSGI+Celery(超详细)
    一、知识储备经过我们之前学习的Docker相关知识,现在我们来进行实战,以下介绍如何通过DockerCompose部署Django项目:先前知识:Docker学习笔记(一)概念理解-CSDN博客Docker学习笔记(二)镜像、容器、仓库相关命令操作-CSDN博客Docker学习笔记(三)Dockerfile-CSDN博客DockerCompose......
  • nginx作为反向代理服务器:代理MySQL、Postgresql、Redis及多个TCP服务
    使用Nginx作为反向代理服务器,可以代理MySQL、PostgreSQL、Redis及多个TCP服务。这需要配置Nginx的stream模块。以下是详细的配置步骤:1.确保Nginx支持stream模块首先,确保Nginx已经编译并支持stream模块。运行以下命令检查:nginx-V在输出中查找--with-str......
  • springboot在线商城系统源码idea开发mysql数据库
    下载地址:https://download.csdn.net/download/qq_41221322/89519994摘要近年来,网上购物成了风靡全球的一种现象,大家逐渐接受了网上下单,隔天取货的这种方式。我们分析了一些购物网站现有的不足,结合我们所学的知识,制作了一款购物网站程序。学以致用,语言采用了大学时期学习的J......
  • MySQl数据库课程设计 学生宿舍管理系统
    表的创建(1)createtabledormitory( #宿舍信息表  dormitory_idvarchar(15)notnull,#宿舍号    capacityint,#宿舍人数    bed_idint,#床号    student_namevarchar(20),#姓名    student_sexvarchar(5)#性别);(2)createtablesug......
  • Mysql数据同步ES的4种方式
    1、同步双写 通过应用服务,直接为数据库及ES写如数据。 优点:业务逻辑简单;实时性高缺点:业务耦合,耦合大量数据同步代码硬编码,有需要写入MySQL的地方都需要添加写入ES的代码;影响性能,写入两个存储,响应时间变长不便扩展:搜索可能有一些个性化需求,需要对数据进行聚合,这......
  • windows mysql执行sql文件
    背景快速导入数据表或者数据库。解决直接执行sql文件。虽然直接复制内容也行,但是还是执行文件更好一些。登录mysql-uroot-p-Dxxx-D指定数据库的名称。如果不写,可以在进入mysql命令行后,使用usexxx来使用数据库。执行sourcexxx.sql特别注意,哪怕路径里有空......
  • Spring Boot3整合Mybatis Plus,数据库为MySQL
    项目结构如下:注意不需要任何XML文件1.导入依赖除了SpringBoot创建时自带的依赖,还需要加入:<!--MybatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version&g......
  • 下载,连接mysql数据库驱动(最详细)
    前言本篇博客,我讲讲如何连接数据库?我使用mysql数据库举例。目录下载对应的数据库jar包百度网盘存有8.4.0版本压缩包:链接:https://pan.baidu.com/s/13uZtXRmuewHRbXaaCU0Xsw?pwd=uipy 提取码:uipy 复制这段内容后打开百度网盘手机App,操作更方便哦一下是具体的操作步骤......