mysql的索引类型与数据存储

mysql索引与类型
什么是索引?

索引(Index)是帮助MySQL高效获取数据的数据结构。我们可以简单理解为:快速查找排好序的一种数据结构。Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,一般都是B树结构组织的索引(B+Tree索引)。

索引类型:
索引名称描述
主键索引它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候指定了主键,就会创建主键索引
唯一索引与普通索引类似,不同的是:索引列的值必须唯一,但是允许为空值。如果是组合索引,则列值的组合必须唯一
单索引单个字段建立索引
联合索引多个字段建立的索引,与单索引可统称为普通索引
全文索引FULLTEXT索引用于全文搜索。只有InnoDB和MyISAM存储引擎支持FULLTEXT索引和仅适用于CHAR,VARCHAR和TEXT列。
覆盖索引只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表,速度更快。

innoDB不支持hash索引。

主键索引:

创建主键索引语法:

ALTER TABLE"表名" ADD PRIMARY KEY (字段);

例子:

alter table user add primary key (id);

唯一索引:

创建唯一索引语法:

CREATE UNIQUE INDEX 索引名 ON 表名字段名

例子:

create unique index idx_email on user(email);

普通索引:

创建普通索引语法:

ALTER TABLE 表名 ADD INDEX 索引名(字段

例子:

alter table user add index idx_name(name); --单索引

alter table user ADD index idx_age_sex(age,sex); --联合索引

覆盖索引与全文索引

什么是覆盖索引:

mysql官网表达意思:

只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表,速度更快。

概念:

索引覆盖:是通过普通索引查询的时候,不需要回表查询,直接可以获取到对应的数据

 

全文搜索索引:

全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用分词技术等多种算法智能分析出文本文字中关键字词的频繁以及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。

根据名称创建全文索引:

alter table `user` add FULLTEXT index namefulltext(`name`) WITH parser ngram;
select * from `user` where match(`name`) against('化');

全文搜索索引:

idtitlecontent
1php书籍变量基础语法字符串数组面向对象核心扩展等
2mysql书籍索引事务单表多表查询集群主从分库分表
3redis书籍字符串类型队列有序集合zset类型还有stream类型
4laravel书籍控制器模型数据库数组视图事件队列
5nginx书籍高可用负载均衡反向代理配置解析
6swoole书籍swoole的http服务,tcp定时器
7thinkphp书籍控制器模型数据库数组视图事件队列

全文搜索尽量使用搜索引擎

搜索引擎:es => 大型网站

轻量级搜索引擎:Sphinx =>开销比较小

mysql索引与数据存储的区别:

myisam存储引擎索引:

MYD

MYI

一个存储数据 一个存储索引:分开进行存储。

innodb存储引擎索引:

.ibd => 索引与数据存储 在一个文件中

ascii a 97 b 98

A 65 B 66

总结:

myisam:myisam存储 引擎的普通索引与主键索引在索引指向方面都是指定位实际的数据在磁盘中的位置。

innodb:innodb存储引擎的普通索引与主键索引在索引指定当面是普通索引指定主键索引的数据以及索引相关字段数据在磁盘中的位置,主键索引指向的是数据在磁盘中实际的位置。

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

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

相关文章

理解 Golang 变量在内存分配中的规则

为什么有些变量在堆中分配、有些却在栈中分配? 我们先看来栈和堆的特点: 简单总结就是: 栈:函数局部变量,小数据 堆:大的局部变量,函数内部产生逃逸的变量,动态分配的数据&#x…

【计算机考研】408算法大题怎么练?

先说结论:基础阶段学好各个数据结构与,重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段,并不需要过于专门地练习算法。相反,基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中,…

Vue项目打包成exe文件(electron)

1.将写好的vue项目打包 1.1运行vue ui命令 输出目标文件 如果打开index.html是空白的,而且控制台报错获取xxx资源失败的问题,你需要在vue.config.js 上加一个命令,如果没有你需要创建一个。 2.下载electron官方示例 git clone https://gith…

AI智慧医疗:探索机器学习在医疗保健中的应用与进展

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

3D目标检测跟踪 | 基于kitti+waymo数据集的自动驾驶场景的3D目标检测+跟踪渲染可视化

项目应用场景 面向自动驾驶场景的 3D 目标检测目标跟踪,基于kittiwaymo数据集的自动驾驶场景的3D目标检测跟踪渲染可视化查看。 项目效果 项目细节 > 具体参见项目 README.md (1) Kitti detection 数据集结构 # For Kitti Detection Dataset └── k…

加州大学欧文分校英语基础语法专项课程03:Simple Past Tense 学习笔记(完结)

Learn English: Beginning Grammar Specialization Specialization Certificate course 3: Simple Past Tense Course Certificate 本文是学习 https://www.coursera.org/learn/simple-past-tense 这门课的学习笔记,如有侵权,请联系删除。…

从MySQL5.7平滑升级到MySQL8.0的最佳实践分享

一、前言 升级需求:将5.7.35升级到8.0.27, 升级方式 in-place升级【关闭现有版本MySQL,将二进制或包替换成新版本并在现有数据目录上启动MySQL并执行升级任务的方式,称为in-place升级】 原版本 5.7.35 CentOS Linux release 7.9.2009 新版本…

【cocos creator】【编辑器插件】cocos creator文件复制时,解决cocos creator uuid冲突

!!!修改前先备份 1、将文件夹放在packages文件夹下 2、打开项目,选择要刷新uuid的文件夹 3、菜单栏点击 扩展->refresh-uuid 4、等控制台提示:资源uuid刷新完成,重启项目(!&#…

ubuntu安装nginx以及开启文件服务器

1. 下载源码 下载页面:https://nginx.org/en/download.html 下载地址:https://nginx.org/download/nginx-1.24.0.tar.gz curl -O https://nginx.org/download/nginx-1.24.0.tar.gz2. 依赖配置 sudo apt install gcc make libpcre3-dev zlib1g-dev ope…

golang 归并回源策略

前言 下面是我根据业务需求画了一个架构图,没有特别之处,很普通,都是我们常见的中间件,都是一些幂等性GET 请求。有一个地方很有意思,从service 分别有10000 qps 请求到Redis,并且它们的key 是一样的。这样…

LTD269次升级 | 新增在线提货功能 • 兑换码在线售卖 • 小程序可内嵌跳转其他小程序•新增微信体系入站访客数据与轨迹

1、 新增兑换码在线提货功能; 2、 新增兑换码/卡密在线售卖功能; 3、 入站访客新增微信浏览器渠道访问数据显示; 4、iOS App问题修复与优化; 5、 其他已知问题修复与优化; 01 商城 1) 新增兑换码在线提货功能 在…

2024Spring> HNU-计算机系统-实验2-datalab-导引

前言 datalab考验对于位运算以及浮点数存储的理解,如果真的肯花时间去搞懂,对计算机系统存储的理解真的能上一个台阶。与课程考试关联性上来说不是很大,但对于IEEE的浮点数表示一定要熟练掌握。 导引 ①实验工具包 要完成的是bits.c中的15个…