数据库-索引

概念:

Mysql 索引 事务 存储引擎

索引:索引是一个排序的列表,列表当中存储的是索引的值和包含这个值的数据所在行的物理地址

索引的作用:就好比书的目录,加快查询的速度

概念图:

索引的作用:

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

索引的副作用:

索引也占用额外额磁盘空间,INNODB表数据文件本身也是索引,myisam:索引和数据文件是分离的,更新一个包含索引的表,要比更新一个没有索引花费的时间更多,更新值的值,也就是更新索引。

创建表的时候需要考虑的因素:

  1. 关联程度三张表,选好关联字段
  2. 每个字段的长度,也要考虑
  3. 设计合理的索引列
  4. 表数据,要控制在合理的范围之内,可以在牺牲一定性能的条件下,满足需求,5秒以上就要考虑优化了,10秒以上一般是出问题了(缓存失效,缓存击穿,缓存雪崩)

索引创建的原则:

  1. 如果有索引,数据库会先查询索引,然后定位数据,索引使用不当,反而会增加数据库的负担

主键和外键必须有索引(创建好了主键和外键,不需要额外声明)

  1. 如果一个表超过了300行的记录,必须要用索引,否则数据库会遍历表的所有数据,
  2. 互相之间有关联的表,如果你是关联的表,在这个关联字段设置索引,如果字段的唯一性太差的字段不适合创建索引
  3. 更新太频繁的字段,不适合做索引,比方说年龄
  4. 经常被while条件匹配的字段,尤其是大表,数据比较多的,应该创建索引
  5. 经常进行group by(分组语句)order by(排序语句)要建立索引
  6. 索引列的字段越小越好,长文本的字段,不适合建立索引

查看表的索引:

Show index from 表名

索引的类型:

  1. 常用类型
  1. 数索引又叫BTREE

树结构的索引,也是大部分数据库的默认索引类型

根节点:树的最顶端的分支节点

分支节点:指向索引里面其他的分支节点,也可以是叶子节点

叶子节点:直接指向表里的数据

就好比一本书:根节点为目录

哈希索引:散列索引,把任意长度的输入,通过散列算法变换成固定长度的输入,散列值---分别对应数据里的列和行

Mysql的默认引擎:INNODB默认的索引类型就是btree

MEMORY引擎就是可以支持HASH,也就是他的默认引擎

他是先算散列值,然后再对应,速度比较慢,比btree慢

Hash的索引匹配:= in () <=>  

HASH

查看HASH,要先改变原有的默认的INNODB

如何HASH匹配查询

  1. 先创建一个表

创建HASH和btree索引:

创建索引(普通索引):

查看表的索引:

show index from member;

修改的方式进行添加索引:

alter table member add index idcard_index (idcard);

唯一索引:

unique与普通索引类似,唯一索引的每个值都是唯一的,唯一索引

允许空值添加唯一键才会创建唯一键,最好不要为空,unique not null

添加唯一索引:

create unique index phone_index on member (phone);

添加列:

alter table member add column address varchar(40) not null;

查看标的索引:

show index from table1;

如何在创表语句时添加唯一索引:

create table table1 (

id int(4) primary key,

name varchar(10),

card_id int(18) not null,

phone int(11)not null,

unique cardid_index (card_id),

unique phone_index (phone) 

);

能在建表时创建好的条件,尽量在创建表时把条件约束好,不要创玩之后再添加

主键索引:

创建表的指定的主键就是索引,添加主键自动就是主键索引

主键:值唯一,一个表只能有一个主键,不允许为空值,创建主键,自动主键创建索引

全文索引:

适合在进行模糊查询的时候使用,可以在一边文章中检索文本信息,一般用于长文本列text

创建全文索引

如何表内创建全文索引:

create table test3 (

id int(4) primary key,

name varchar(10),

card_id int(18) not null,

phone int(11)not null,

notes text,添加一个长文本列test

unique cardid_index (card_id),

unique phone_index (phone),

fulltext notes_index (notes)

);

删除索引:

drop index notes_index on test3;

模糊查询:

select * from test3 where notes like '%'

explain:表示是否使用了索引

联合索引

如何创建联合索引:指定一个索引名,一个索引名对应多个列名

创建联合索引:

create index index_union on member1 (name,phone);

查看索引方式:

explain select * from member1 where name='王某某' and phone=13546555;

索引失效的一些情况:

创建一个联合索引:

联合索引,查询索引时必须按照查询的顺序来进行查询

查找数据

查看索引

用的主键索引

联合索引小结:

联合索引:

1.从左到右侧开始,不能跳过索引,否则就会失效

2.范围查询,有可能右侧的索引就会失效,如果索引是字符串,但是不加引号,索引还是会失效

3.使用or这个条件,mysql无法使用多个索引,索引一定失效

4.使用空值和非空值,也就是null和not null 有时候索引也会会失效,若where is null 数据的绝大多数都是空值,索引失效,若where is not null 数据多数不为null,索引失效

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第四章 应用SysML基本特性集的汽车示例 P1|系统建模语言SysML实用指南学习

仅供个人学习记录 汽车模型 主要就是应用练习建模了 Automobile Domain包 用于组织模型的包图 将模型组织入包的包图 需求图捕获汽车规范 汽车规范中包含系统需求的需求图 块定义图定义车辆及其外部环境 汽车域块定义图 用例图表示操作车辆 描述车辆主要功能的用…

uniapp中APP端使用echarts用formatter设置y轴保留2位小数点不生效

uniapp使用echarts&#xff0c;在内置浏览器中&#xff0c;设置保留2位小数能正常显示&#xff08;代码如下&#xff09;&#xff0c;但是在APP端这个设置不起作用。 yAxis: {type: value,axisLabel: {formatter: function (val) {return val.toFixed(2); //y轴始终保留小数点…

【Java 进阶篇】Java Web开发:实现验证码功能

在Web应用程序中&#xff0c;验证码&#xff08;CAPTCHA&#xff09;是一种常见的安全工具&#xff0c;用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现&#xff0c;要求用户在登录或注册时输入正确的字符。在这篇文章中&#xff0c;我们将详细介绍如何在Java Web…

Ubuntu 搭建 DHCP ivp6 server 步骤

Ubuntu 搭建 DHCP ivp6 server 步骤 安装 DHCP server安装 radvd&#xff08;实现局域网路由功能)测试运行 安装 DHCP server apt 安装 isc-dhcp-server sudo apt-get install isc-dhcp-server修改配置文件 /etc/dhcp/dhcpd6.conf 内容如下&#xff1a; lease-time 7200; lo…

如何在idea中使用maven搭建tomcat环境

目录 一、创建maven项目 二、完善代码结构 三、引入依赖和插件 四、启动tomcat&#xff0c;运行项目 &#xff08;1&#xff09;点击添加配置 &#xff08;2&#xff09;点击左上角的加号&#xff0c;选择maven &#xff08;3&#xff09;输入运行命令 五、验证 一、创建…

GB28181学习(十四)——语音广播与语音对讲

语音对讲 定义 用户端向设备通过视音频点播请求音频数据&#xff1b;用户端接收音频数据并通过特定的播放设备&#xff08;如音响&#xff09;播放&#xff1b;用户端向设备发送广播请求&#xff1b;设备解析广播成功后通过INVITE方法向用户请求音频数据&#xff1b;用户通过音…

Android studio进入手机调试状态

首先usb插入电脑手机打开开发者模式进入点击就会在你的页面显示了

ARL灯塔安装与使用

ARL灯塔安装与使用 1. 系统要求2. ARL灯塔安装2.1. docker环境安装2.1.1. 更新yum包2.1.2. 卸载老版docker2.1.3. 安装docker所需要的依赖包2.1.4. 设置yum源2.1.5. 查看仓库中docker版本2.1.6. 安装docker最新版2.1.7. docker设置2.1.8. docker其它命令 2.2. 安装docker-compo…

JS(JavaScript) 实现延迟等待(sleep方法)

起因&#xff1a; 只使用 setTimeout 会产生嵌套等方面的问题&#xff0c;达不到想要的效果。 解决方法&#xff1a; 使用 async/await 还有 Promise 相结合的方式来解决问题。 直接上代码&#xff1a; function sleep(time) {return new Promise((resolve) > setTimeout…

SAP MM学习笔记39 - MRP(资材所要量计划)

这一章开始&#xff0c;离开请求书&#xff0c;学点儿新知识啦。 MRP ( Material Requirement Planning ) - 资材所要量计划。 它的位置在下面的调达周期图上来看&#xff0c;就是右上角的 所要量决定那块儿。 1&#xff0c;MRP(资材所要量计划) 的概要 MRP 的主要目的就是 确…

python进程

进程的定义和常用方法 import os from multiprocessing import Process from time import sleepm 1 list1 []def task1(s, name):global mwhile True:sleep(1)m 1print("进程1", m)list1.append(str(m) "task1")print(list1)print("------------…

FedAT:异步更新联邦学习方法

文章链接&#xff1a;FedAT: A Communication-Efficient Federated Learning Method with Asynchronous Tiers under Non-IID Data 发表会议: SC’21 (International Conference for High Performance Computing, Networking, Storage, and Analysis) 高性能计算&#xff0c;体…

网络套接字编程(二)

网络套接字编程(二) 文章目录 网络套接字编程(二)简易TCP网络程序服务端创建套接字服务端绑定IP地址和端口号服务端监听服务端运行服务端网络服务服务端启动客户端创建套接字客户端的绑定和监听问题客户端建立连接并通信客户端启动程序测试单执行流服务器的弊端 多进程版TCP网络…

scrapy-redis分布式爬虫(分布式爬虫简述+分布式爬虫实战)

一、分布式爬虫简述 &#xff08;一&#xff09;分布式爬虫优势 1.充分利用多台机器的带宽速度 2.充分利用多台机器的ip地址 &#xff08;二&#xff09;Redis数据库 1.Redis是一个高性能的nosql数据库 2.Redis的所有操作都是原子性的 3.Redis的数据类型都是基于基本数据…

攻防世界-web-bug

1. 问题描述 没有额外的描述&#xff0c;仅仅是这样的一个登录界面 但是&#xff0c;我们注意到有注册&#xff08;Register&#xff09;和找回密码&#xff08;Findpwd&#xff09;这俩按钮 注册界面如下&#xff1a;需要输入用户名&#xff0c;密码&#xff0c;生日及地址 …

自动曝光算法(第一讲)

序言 失业在家无事&#xff0c;想到以后换方向不做自动曝光了&#xff0c;但是自动曝光的工作经验也不能浪费了&#xff0c;准备写一个自动曝光的教学&#xff0c;留给想做自动曝光的小伙伴参考。笔者当时开发自动曝光没有按摄影的avtvevbvsv公式弄&#xff0c;而是按正确的增…

K-means(K-均值)算法

K-means&#xff08;k-均值&#xff0c;也记为kmeans&#xff09;是聚类算法中的一种&#xff0c;由于其原理简单&#xff0c;可解释强&#xff0c;实现方便&#xff0c;收敛速度快&#xff0c;在数据挖掘、聚类分析、数据聚类、模式识别、金融风控、数据科学、智能营销和数据运…

UML类图关系

1.依赖 依赖关系由箭头表示&#xff0c;含义为A类在类中用到了B类&#xff0c;如B类作为A类的属性、参数、返回值等都属于依赖关系。 2.泛化&#xff08;继承&#xff09; 泛化用三角箭头和直线表示&#xff0c;extend。 3.实现 实现用三角箭头和虚线表示&#xff0c;在…

Mac 配置环境变量

Mac 配置环境变量 修改配置文件 vim ~/.bash_profile i进入编辑模式. Esc&#xff1a;wq 保存文件 esc:q 退出 如&#xff1a;jdk环境变量配置 JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/HomeCLASSPATH$JAVA_HOME/lib/tools.jar:$JAVA_HOME/…

11月的『备考学习计划』+高效的作息时间表 超好用~

每日作息时间表 每天有三个时间段学习效率高 上午10点左右 下午4点左右 晚上8点-10点左右 坚持住了&#xff0c;学习效果事半功倍 有同感的同学 可以举举手&#x1f91a;&#xff0c;点点赞&#x1f493; 每日作息时间表 6:30-7:00起床 6:30---7:00是起床的最佳时刻&am…