mysql---索引

概要

索引:排序的列表,列表当中存储的是索引的值和包含这个值的数据所在的行的物理地址
作用:加快查找速度

注:索引要在创建表时尽量创建完全,后期添加影响变动大。

索引也需要占用磁盘空间,innodb表数据文件本身也是索引,myisam索引和数据文件是分离的。
更新一个有索引的表比更新一个无索引表,花费的时间更多。更新了值,也就是更新索引。

索引的作用:

1、利用索引数据库可以快速定位,大大加快查询速度
2、表的数据很多,查询需要关联多个表,此时索引提高查询速度
3、加快表与表连接的速度
4、使用分组和排序时,可以大大减少时间
5、提高数据库恢复数据时的速度

索引创建的原则

1、有索引,数据会先进行索引查询,然后定位数据,索引使用不当,反而会增加数据库的负担
主键,外键必须有索引(创建好了主键和外键自动就是索引,而不需要额外的声明)
2、一个表超过300行记录,必须要有索引,否则会遍历表的所有数据

3、互相之间有关联的表,在关联字段应该设置索引
4、唯一性太差的字段,不适合做索引
5、更新太频繁的字段,不适合做索引
6、经常被where条件匹配的字段,表数据比较多的应该是创建索引
7、在经常进行group by (分组) order by(排序)的字段上要建立索引
8、索引的列的字段越小越好,长文本字段不适合建立索引


索引的类型

1、B-树索引 BTREE

树型结构的索引,大部分数据库的默认索引类型。
根节点:书的最顶端的分支节点
分支节点:指向索引里其他的分支节点,也可以是叶子节点


2、哈希索引

散列索引 把任意长度的输入,通过散列算法变换成固定长度的输出。散列值---分别对应数据里的列和行,不能排序(排序时索引是失效的)


mysql 默认引擎 innodb 也就是btree
memory引擎可以支持hash,也是默认索引
先算散列值,然后再对应,速度比较慢,比btree
hash的索引匹配: = in () <= >


3、orcale

默认都是树形结构的索引

创建索引及索引类型(默认innodb)

格式:create index 索引名 on 表名 (属性) USING hash;

修改引擎类型

格式:alter table 表名 engine=innodb/memory;

查看表索引

格式:show index from 表名; 

Non_unique 可唯一为0 可重复为1 

新增普通索引

格式:alter table 表名 add index 索引名(属性名);

 

 

索引类型

创建表时创建索引的格式

1559ed705aee4be2a70821504c7bd2d8.png

1、普通索引

普通索引:添加格式

 

格式:ALTER TABLE  表名 add index 索引名(属性名);

格式:CREATE INDEX  索引名 ON 表名 (属性名);

2、主键索引

创建表的指定的主键就是索引,添加主键自动的就是主键索引。
                  主键要素:值唯一 一个表只能有一个主键 不允许有空值 创建主键,自动主键索引。

主键索引:添加格式

格式:ALTER TABLE  表名 primary key (属性名);

3、唯一索引

与普通索引类似,唯一索引的每个值都是唯一,唯一值允许为空值,空值多了就会失效

唯一索引:添加格式

unique 与普通索引类似,唯一索引的每个值都是唯一,唯一值允许为空值,空值多了就会失效
格式:CREATE UNIQUE INDEX 索引名 on 表名 (属性名);
格式:ALTER TABLE  表名 add unique 索引名(属性名);

4、全文索引

适合在模糊查询的时候使用,可以在一边文章中检索文本。

全文索引:添加格式

格式:alter table 表名 add FULLTEXT 索引名(属性名);
格式:CREATE FULLTEXT INDEX 索引名 on 表名 (属性名);

5、联合索引

指定一个索引名,一个索引名对应多个列名。

联合索引,从左到右侧开始,不能跳过索引,否则索引会失效。

联合索引:添加格式

格式:alter table 表名 add INDEX  索引名(属性名1,属性名2);
格式:create index 索引名 on 表名 (属性名1,属性名2);
 

查看是否用到索引(EXPLAIN)

EXPLAIN SELECT语句;

例:EXPLAIN SELECT * from 表名 where 列名 like '模糊过滤条件';

删除索引

格式:DROP index 索引名 on 表名;

 

 

索引失效的几种情况

1、范围查询,有可能右侧的索引会失效。

2、如果索引是字符串,不加引号,索引会失效
3、使用or 语句索引一定会失效,使用or作为条件,mysql 无法同时使用多个索引。

4、有时候索引会失效 where is null 数据的绝大多数都是空值,索引失效
                                 where is not null 数据多数为不空,索引失效
                                             in age 索引生效
                                             not in age 索引失效

如果检索响应时间过长,怎么办?(三步走)

1、首先查缓存,是否请求到后端数据库
2、再看索引,请求的列值不是默认索引,添加即可  用explain 查看索引的使用情况
3、指定判定内容过多

 

创建表的因素(四个点)

·关联程度3张表,选好关联字段
·每个字段的长度
·设置合理的索引列
·表数据要控制在合理的范围之内,可以在牺牲一定的性能的条件下,满足需求即可。大于5s考虑,大于10s一般是出了问题(缓存失效、缓存击穿、缓存雪崩)

 

 

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

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

相关文章

科技战再次升级!国内前沿科技行业影响悬而未决

&#xff08;图片来源&#xff1a;网络&#xff09; 美国与中国的科技贸易战正在升级&#xff0c;美国总统拜登发布行政命令限制美国对半导体和微电子、量子信息技术和人工智能等特定行业的跨国投资。在此前美国对中国芯片相关出口的一系列限制之后&#xff0c;又增加了此项新…

每日一题(LeetCode)----二分查找(三)

每日一题(LeetCode)----二分查找&#xff08;三&#xff09; 1.题目&#xff08;69. x 的平方根 &#xff09; 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 **注意…

服务器数据恢复-VSAN环境下ESXI虚拟机无法访问的数据恢复方案

一、用户信息&#xff1a; 广东某单位 二、数据恢复环境&#xff1a; 主机操作系统&#xff1a;ESXI 分区类型&#xff1a;VSAN 存储介质清单 &#xff1a;一共8台服务器节点&#xff0c;每节点2个磁盘组&#xff0c;其中1个磁盘组配置1块SSD固态硬盘&#xff0c;4块1.2T机…

【Linux】第七站:vim的使用以及配置

文章目录 一、vim1.vim的介绍2.vim基本使用3.vim的命令模式常用命令4.底行模式 二、vim的配置 一、vim 1.vim的介绍 vim编辑器&#xff0c;用来文本编写&#xff0c;可以写代码 它是一个多模式的编辑器 它有很多的模&#xff0c;不过我们暂时先只考虑这三种模式 命令模式插入模…

【ES专题】ElasticSearch快速入门

目录 前言从一个【搜索】说起 阅读对象阅读导航笔记正文一、全文检索1.1 什么是【全文检索】1.2 【全文检索】原理1.3 什么是倒排索引 二、ElasticSearch简介2.1 ElasticSearch介绍2.2 ElasticSearch应用场景2.3 数据库横向对比 三、ElasticSearch环境搭建3.1 Windows下安装3.2…

VueX环境的搭建

一、安装VueX npm i vuex // Vue3安装该版本 npm i vuex3 // Vue2安装该版本 因为我使用的是Vue2&#xff0c;所以安装的是3版本 二、配置VueX文件 在src目录下创建store文件夹&#xff0c;再创建index.js 在index.js中配置如下代码&#xff1a; // VueX配置文件/…

Linux shell编程学习笔记17:for循环语句

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、字符串、文件测试等多种运算&#xff0c;同样也需要进行根据条件进行流程控制&#xff0c;提供了if、for、while、until等语句。 之前我们探讨了if语句&#xff0c;现在我们来探讨for循环语句。 Li…

优先队列----数据结构

概念 不知道你玩过英雄联盟吗&#xff1f;英雄联盟里面的防御塔会攻击离自己最近的小兵&#xff0c;但是如果有炮车兵在塔内&#xff0c;防御塔会优先攻击炮车&#xff08;因为炮车的威胁性更大&#xff09;&#xff0c;只有没有兵线在塔内时&#xff0c;防御塔才会攻击英雄。…

实在智能携手品牌商家,在活动会面中共谋发展

金秋十月&#xff0c;丰收的季节&#xff0c;也是商家们在双11大展拳脚的时刻。为迎战一年一度的双11大促&#xff0c;品牌商家在10月份卯足劲&#xff0c;制定一系列营销方案&#xff0c;争取为店铺带来更多流量和订单。 其中&#xff0c;舍得、同科医药、梅子熟了、宝洁、维…

回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测

回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测 目录 回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.RIME-CNN-SVM霜冰优化算…

大坝水库安全监测终端MCU,智能化管理的新篇章!

我国目前拥有超过9.8万座水库大坝&#xff0c;其中超过95%为土石坝&#xff0c;这些大坝主要是在上世纪80年代以前建造的。这些水库大坝在保障防洪、发电、供水、灌溉等方面发挥了巨大的作用&#xff0c;但是同时也存在一定的安全风险&#xff0c;比如坝体结构破损、坝基渗漏、…

掌握 JavaScript 的基本语法

一、javascript书写位置 JavaScript 可以写在 HTML 页面中的以下三个位置&#xff1a; 内联脚本&#xff1a;将 JavaScript 代码直接写在 HTML 元素的 onclick、onload、onsubmit 等事件属性中。例如&#xff1a; <button onclick"alert(Hello World)">点击我…

【设计模式】第19节:行为型模式之“中介模式”

一、简介 中介模式定义了一个单独的&#xff08;中介&#xff09;对象&#xff0c;来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互&#xff0c;来避免对象之间的直接交互。 中介模式的设计思想跟中间层很像&#xff0c;通过引入中介这个中间层&#xf…

2023年11月1日蜻蜓C影视追剧系统v1.2.2更新-与时俱进调整微信登录授权获取方式-修复无法登陆授权

2023年11月1日蜻蜓C影视追剧系统v1.2.2更新-与时俱进调整微信登录授权获取方式-修复无法登陆授权 问题背景&#xff1a; 小程序用户头像昵称获取规则调整公告官方 微信团队2022-05-09 更新时间&#xff1a;2022年11月9日 由于 PC/macOS 平台「头像昵称填写能力」存在兼容性问…

518抽奖软件,安全稳定,不怕手抖误按键

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 防误按功能 入口&#xff1a; 主界面上点右…

Unity Profiler 详细解析(二)

Profiler的主要参数详解 1. Memory Profiler Uesd Total : 当前帧的Unity内存&#xff0c;Mono内存&#xff0c;GfxDriver内存&#xff0c;Profiler内存以及额外内存的总和。 Reserved Total&#xff1a; 系统在当前帧申请的总体物理内存 Total System Memory Usage&#xff1…

MSQL系列(十一) Mysql实战-Inner Join算法底层原理及驱动表选择

Mysql实战-Inner Join算法驱动表选择 前面我们讲解了BTree的索引结构&#xff0c;及Mysql的存储引擎MyISAM和InnoDB,也详细讲解下 left Join的底层驱动表 选择, 并且初步了解 Inner join是Mysql 主动选择优化的驱动表&#xff0c;知道索引要建立在被驱动表上 那么对于Inner j…

MTSC2023|深圳大会,你关心的技术话题都在这里

MTSC中国互联网测试开发大会 (Make Tester Super Cool&#xff0c; 简称MTSC&#xff09; 是由国内知名的测试技术社区TesterHome发起的软件测试行业技术会议&#xff0c;大会以“软件质量保障体系和测试研发技术交流”为主要目的&#xff0c;旨在为行业搭建一个深入探讨和交流…

Android NDK开发详解之调试和性能分析的ndk-gdb

Android NDK开发详解之调试和性能分析的ndk-gdb 要求用法选项 NDK 包含一个名为 ndk-gdb 的 Shell 脚本&#xff0c;可以启动命令行原生调试会话。偏好使用 GUI 的用户则应阅读在 Android Studio 中调试这篇文档。 要求 要运行命令行原生调试&#xff0c;必须满足以下要求&am…

【深度学习】Transformer、GPT、BERT、Seq2Seq什么区别?

请看vcr&#xff1a;https://transformers.run/back/transformer/