mysql Index

创建索引

方法1
create table 表(
col1 int,
col2 int,

index | key index_name (列名)

方法2
alter table 表名 ADD index
alter table student_table add index index_name(stu_id);

方法3
create index index_name on 表名(列)

删除索引

方式1
alter table xx
drop primary key;

ALTER TABLE 表名 DROP INDEX 索引名;

方式2
drop index index_name on 表名;

查看索引

方式1
show create table 表名 ;

方式2
show index from 表名;

创建全文索引

FULLTEXT 全文索引可以用于全文搜索,并且只为 CHAR 、VARCHAR、TEXT 列创建索引。索引总是对整个列进行,不支持局部(前缀)索引

create table table_1(
id int not null,
info varchar(255),
FULLTEXT INDEX | key fultxt_idx_info(info)
) engine=Myisam;

create table papers (
id int unsigned not null auto_increment,
title varchar(200), defualt null,
content text,
primary key( id ),
fulltext key title (title,content)
)engine = innodb default charset=utf8;

lile 方式查询:
select * from papers where content like ‘%查询字符串%’;

全文索引 用 match+against 方式查询:
select * from papers where match(title,content) against (‘查询字符串’);

  1. 全文索引比like + % 快N倍,但是可能存在精度问题;
  2. 如果需要全文索引的是大量数据,建议先添加数据,再创建索引。

MySQL8.0 索引新特性

索引降序
mysql8.0 支持降序索引,而且仅限于InnoDB 存储引擎
8.0 之前创建的仍然是升序索引,使用时进行反向扫描。这大大降低了数据库的效率。

方式1 创建表
create table ts1(a int ,b int ,index idx_a_b(a asc,b desc)
方式2 alter方式
alter table ts1
add index id_a_b(a asc,b desc);
方式3 create index
create index idx_a_b on ts1(a asc,b desc)
在这里插入图片描述
隐藏索引
在mysql5.7 之前,只能通过显示的方式删除索引,才能让索引不起作用,如果发现删错了,只能通过显示创建索引的方式将删除的索引创建回来。如果数据表中的数据量非常大,或者数据表本身比较大,这种操作就会消耗系统过多的资源,操作成本非常高

在mysql8.0 开始 支持 隐藏索引(invisible indexes),只需要将待删除的索引设置为隐藏索引,使查询优化器不再使用这个索引(即使使用force index 强制索引,优化器也不会使用该索引),确认将索引设置为隐藏索引后系统不受任何响应,就可以彻底删除索引。这种通过先将索引设置为隐藏索引,再删除索引的方式就是软删除

同时,如果你想验证某个索引删除之后的查询性能影响,就可以暂时先隐藏该索引

注意
主键不能被设置为隐藏索引。当表中没有显式主键时,表中第一个唯一非空索引会成为隐式主键,也不能设置为隐藏索引

索引默认是可见的,在 使用create table 、create index 、alter table 等语句是可以通过visible或invisible关键词设置索引的可见性

创建隐藏索引
create table book(
id int primariy key auto_increment,
book_name varchar(20) not null,
price double,
index index_book_name(book_name) visible | Invisible;
创表之后 方法1
alter table book_1
add index index_book(col) visible | invisible;
创表之后 方法2
create index index_name on 表(col) visible | Invisible;

修改索引的可见性
alter table 表 alter index index_name invisible | visible;

隐藏索引 注意点

当索引被隐藏时,它的内容仍然是和正常索引一样实时更新的,如果一个索引需要长期被隐藏,那么可以将其删除,因为索引的存在会影响插入、更新和删除的性能。

是隐藏索引对查询优化器可见

mysql 8.0 可以通过use_invisiable_indexes设置为off(默认值),优化器会忽略隐藏索引,如果设置On,即使隐藏索引不可见,优化器在生成执行计划时仍会考虑使用隐藏索引。

查看优化器的开关设置
select @@optimizer_switch \G
在这里插入图片描述

设置隐藏索引对优化器可见
set session optimizer_switch=‘use_invisible_indexes=on’;
在这里插入图片描述

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

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

相关文章

革命性的电子元件:RAD继电器 | 百能云芯

在现代电子和通信系统中,RAD继电器是一种关键的电子元件,它在各种应用中发挥着重要作用。RAD继电器(Reed-relay Actuated Device)是一种基于磁性原理的电子开关,其特点是极其高速、可靠、低功耗和长寿命。下面云芯将为…

案例分享:西河水库安全监测信息化系统实施方案

一、项目概述1.1项目背景西河水库信息化工作已开展多年,但是由于西河水库监测设备都已经老化或者损坏,现有设备已渐渐不能满足新时期西河水库信息化和现代化发展需求。因此,灌区管理局拟在运用现代信息和通信技术手段感测、分析、整合水库运行…

el-date-picker自定义只能选中当前月份和半年内月份等

需求:el-date-picker只能选中当前月期和当前月期往前半年,其他时间就禁用了不让选择了,因为没数据哈哈。当然也可以选择往前一年等。 一、效果 二、写个日期选择器 :picker-options:日期选项 value-format:选择后的格…

设计模式-工厂模式Factory

工厂模式 b.工厂方法模式 (Factory Method) (重点)1) 简单工厂 Simple Factory1.a) 简单工厂的好处 2) 工厂方法 Factory Method2.a) 对工厂进行抽象化 (版本一)2.b) 对工厂进行缓存 (版本二)2.c) 加载配置文件到缓存中 (版本三)c.1) 产品线 c.抽象工厂模式 (Abstract Factory)…

SQL-DQL

-----分组查询----- 1.语法: SELECT 字段列表 FROM 表名 [WHERE 条件 ] GROUP BY 分组字段名 [HAVING 分组后过滤条件]; 2.where与having区别 》执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组&…

【Flutter】Flutter 使用 qr_flutter 实现QR码二维码生成与渲染

【Flutter】Flutter 使用 qr_flutter 实现QR码二维码生成与渲染 文章目录 一、前言二、qr_flutter 包简介三、安装与配置四、基本使用五、高级功能与自定义六、完整实际业务代码示例七、总结 一、前言 亲爱的 Flutter 初学者,你好!今天我要与你分享一个…

【黑马头条之项目部署_持续集成Jenkins】

本笔记内容为黑马头条项目的项目部署_持续集成部分 目录 一、内容介绍 1、什么是持续集成 2、持续集成的好处 3、今日内容 二、软件开发模式 1、软件开发生命周期 2、软件开发瀑布模型 3、软件的敏捷开发 三、Jenkins安装配置 1、Jenkins介绍 2、Jenkins环境搭建 …

OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理

前言:在部分大厂笔试时经常会使用OJ题目,这里对《华为机试》和《剑指offer》中的部分题目进行思路分析和讲解,希望对各位读者有所帮助。 题目来自牛客网,欢迎各位积极挑战: HJ73:计算日期到天数转换_牛客网 JZ17:打印…

【【STM32-29正点原子版本串口发送传输实验】

STM32-29正点原子版本串口发送传输实验 通过串口接收或发送一个字符 例程目的 开发板上我们接入的是实现异步通信的UART接口 USB转串口原理图 我们一步步分析 PA9是串口1 的发送引脚 PA10是串口1 的接受引脚 。因为我们现在只是用到异步收发器功能,所以我们现…

qt中子窗口最小化后再恢复显示窗口区域显示为全白色

问题: qt中子窗口最小化后再恢复显示窗口区域显示为全白色,如下图: 原因: 恢复显示后窗口为及时刷新。 解决办法: 重写showEvent函数,如下: void MyClass::showEvent(QShowEvent *event) {se…

大模型 Dalle2 学习三部曲(二)clip学习

clip论文比较长48页,但是clip模型本身又比较简单,效果又奇好,正所谓大道至简,我们来学习一下clip论文中的一些技巧,可以让我们快速加深对clip模型的理解,以及大模型对推荐带来革命性的变化。 clip结构 首选…

Mybatis 动态SQL – 使用choose标签动态生成条件语句

之前我们介绍了if,where标签的使用;本篇我们需要在if,where标签的基础上介绍如何使用Mybatis提供的choose标签动态生成条件语句。 如果您对if,where标签动态生成条件语句不太了解,建议您先进行了解后再阅读本篇,可以参考: Mybat…

CSS中如何实现文字描边效果(Text Stroke)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 文字描边效果(Text Stroke)⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个…

Go实现LogCollect:海量日志收集系统【上篇——LogAgent实现】

Go实现LogCollect:海量日志收集系统【上篇——LogAgent实现】 下篇:Go实现LogCollect:海量日志收集系统【下篇——开发LogTransfer】 项目架构图: 0 项目背景与方案选择 背景 当公司发展的越来越大,业务越来越复杂…

Mysql底层数据结构为什么选择B+树

索引底层采用什么数据结构,为什么使用B树而不是其他数据结构: (1)如果采用二叉树:使用递增字段作为索引时,二叉树会退化成链表,查找效率太低 (2)如果采用红黑树&#xf…

微信小程序开发:一种新型的移动应用程序开发方式

一、引言 随着移动互联网的快速发展,微信小程序作为一种新型的移动应用开发方式,正在受到越来越多的关注。微信小程序是一种基于微信平台的轻量化应用,开发者可以通过微信提供的开发工具和接口,开发出各种具有特定功能的应用程序…

如何创建一个自己的sphinx文档网站

文章目录 前言一、操作步骤1.安装anaconda2.启动python3.8环境3.安装Sphinx4.创建文件夹5.初始化环境6. 编译7.文件夹搭查看8.搭建nginx查看8. 更换主题9.错误修复10.这里提供两个模板1.Demo_md2.Demo_rst前言 最近看到公司的文档中心,突然想起,为什么不为自己创建一个文档中…

在k8s中用label控制Pod部署到指定的node上

案例-标注k8s-node1是配置了SSD的节点 kubectl label node k8s-node1 disktypessd 查看标记 测试 将pod部署到disktypessd的节点上(这里设置了k8s-node1为ssd) 部署后查看结果-副本全都运行在了k8s-node1上—符合预期 删除标记 kubectl label node k8…

顶尖211“小清华”!强过985,不要错过它!

一、学校及专业介绍 西安电子科技大学(Xidian University),简称“西电” ,位于陕西省西安市,是中央部属高校,直属于教育部,为全国重点大学,位列国家“双一流”“211工程”&#xff…

MySQL的内置函数复合查询内外连接

文章目录 内置函数时间函数字符串函数数学函数其他函数 复合查询多表笛卡尔积自连接在where中使用子查询多列子查询在from中使用子查询 内连接外连接左外连接右外连接 内置函数 时间函数 函数描述current_date()当前日期current_time()当前时间current_timestamp()当前时间戳…