MySQL之索引与事务

news2024/11/15 23:35:49

一 索引的概念

一种帮助系统查找信息的数据

数据库索引

是一个排序的列表,存储着索引值和这个值所对应的物理地址无须对整个表进行扫描,通过物理地

址就可以找到所需数据是表中一列或者若干列值排序的方法

需要额外的磁盘空间

索引的作用

1 数据库利用各种快速定位技术,能够大大加快查询速率当表很大或查询涉及到多个表时,可以成干上万倍地提高查询速度

2 可以降低数据库的IO成本,并且还可以降低数据库的排序成本

3 通过创建唯一性索引保证数据表数据的唯一性可以加快表与表之间的连接在使用分组和排序时,可大大减少分组和排序时间

索引的副作用

1 索引需要占用额外的磁盘空间(对于MyISAM引擎而言,索引文件和数据文件是分离的,索引文件用于保存数据记录的地址。而nnoDB 引擎的表数据文件本身就是索引文件当表很大或查询涉及到多个表时,可以成千上万倍地提高查询速度)

2 在插入和修改数据时要花费更多的时间,因为索引也要随之变动

创建索引的原则依据

表的主键、外键必须有索引记录数超过300行的表应该有索引经常与其他表进行连接的表,在连接字段上应该建立索引唯一性太差的字段不适合建立索引更新太频繁地字段不适合创建索引

经常出现在where子句中的字段,特别是大表的字段应该建立索引索引应该建在选择性高的字段上索引应该建在小字段上,对于大的文本字段甚至超长字段不要建卖己

二 索引的分类

1 普通索引

最基本的索类型,没有唯一性之类的限制
创建普通索引的方式

创建表的时候指定索引
CREATE TABLE 表名 ( 字段1 数据类型,字段2 数据类型[,...],INDEX 索引名 (列名));

例:create table test(id int(4) not null,name varchar(10) not null,cardid varchar(18) not null,index id_index (id));
show create table test;

直接创建索引

CREATE  INDEX   索引名  ON  表名  (列名[(length)]);

 

修改表时创建索引

ALTER  TABLE  表名  ADD  INDEX  索引名 (列名);

创建表的时候指定索引

CREATE TABLE 表名 ( 字段1 数据类型,字段2 数据类型[,...],INDEX 索引名 (列名));

2 唯一索引

与普通索引类似,但区别是唯一索引列的每个值都唯一。
唯一索引允许有空值(注意和主键不同)。如果是用组合索引创建,则列值的组合必须唯一。添加唯一键将自动创建唯一索引。

创建唯一索引
直接创建唯一索引

CREATE UNIQUE INDEX 索引名 ON 表名(列名);

创建表的时候指定

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...],UNIQUE 索引名 (列名));

3 主键索引

是一种特殊的唯一索引,必须指定为“PRIMARY KEY”。
一个表只能有一个主键,不允许有空值。 添加主键将自动创建主键索引。

创建表的时候指定

4 组合索引(单列索引与多列索引)

可以是单列上创建的索引,也可以是在多列上创建的索引。需要满足最左原则,因为select语句的 where条件是依次从左往右执行的,所以在使用select 语句查询时where条件使用的字段顺序必须和组合索引中的排序一致,否则索引将不会生效。

5 全文索引(FULLTEXT)

适合在进行模糊查询的时候使用,可用于在一篇文章中检索文本信息。
在 MySQL5.6 版本以前FULLTEXT 索引仅可用于 MyISAM 引擎,在 5.6 版本之后 innodb 引擎也支持 FULLTEXT 索引。全文索引可以在 CHAR、VARCHAR 或者 TEXT 类型的列上创建。每个表只允许有一个全文索引。

使用全文索引查询

SELECT * FROM 表名 WHERE MATCH(列名) AGAINST('查询内容');

 

 

直接创建索引

ALTER TABLE 表名 ADD FULLTEXT 索引名 (列名);

 

创建表的时候指定索引

CREATE TABLE 表名 (字段1 数据类型[,...],FULLTEXT 索引名 (列名)); 
#数据类型可以为 CHAR、VARCHAR 或者 TEXT


 

6 查看索引

show index from 表名;
show index from 表名\G; 竖向显示表索引信息


show keys from 表名;
show keys from 表名\G;

7 删除索引

直接删除索引

DROP INDEX 索引名 ON 表名;

修改表方式删除索引

ALTER TABLE 表名 DROP INDEX 索引名;

删除主键索引

ALTER TABLE 表名 DROP PRIMARY KEY;
 

 三 MySQL事务的概念

它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位

1 事务的ACID特点

原子性:指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性:指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性:指在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。

持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
 

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

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

相关文章

mysqly索引(explain 执行计划)

关键词 执行计划 EXPLAIN 语句查看mysql 优化后的语句 show warnings;EXPLAIN 执行后,各列的含义 要点: select_type 如何查询 表type 如何查询 行key 如何使用 索引key_len 索引 使用多少rows 行 预计使用多少extra 表 的额外信息 1.id id列的编…

Moonsec_Projet_7

Moonsec_Projet_7 1、基础介绍 1.1 网络拓扑图 主机账号密码网卡IPWindows Server 2016administrator!#QWE123vmnet17(web) | vmnet18192.168.0.144(www.moonlab.com) | 10.10.1.131Windows Server 2012administrator!#QWEasdvmnet18 | vmnet1910.10.1.130 | 10.10.10.166Win…

笔记本电脑开机黑屏没反应怎么办?教你逐一排查问题

笔记本电脑是我们日常工作和学习中不可或缺的工具,但有时候在开机时可能会遇到黑屏无反应的问题,这给我们的使用带来了困扰。然而,不用担心,通常情况下,这种问题是可以解决的。在本文中,我们将介绍三种常见…

Redis入门到入坑(一)

Redis入门到入坑(一) Redis缓存入门简介Redis初始操作Redis数据存储操作 Redis常用数据类型简介String类型操作实践Hash类型应用实践List类型应用实践Set类型应用实践 Java中操作redis准备工作Jedis的应用快速入门实现RedisTemplate应用项目工程实践 Red…

【LeetCode: 433. 最小基因变化 + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

YOLOV5 部署:cuda和cuDNN安装

1、前言 TensorRT 的安装需要配合cuda的使用,所以这里需要安装cuda和cudnn用于加速推理 TensorRT 就是神经网络专门用来加速的框架 之前训练yolov5项目的时候,我们只是配置了torch的GPU环境,没有专门安装cuda和cudnn,因为简单的训练、推理没必要cuda加速。 torch的GPU配置…

利用matplot绘制折线图(详细版-有示例数据)

对于五组数据,绘制折线图,添加有图例、不同折线的颜色等,如下图所示: python代码: import matplotlib.pyplot as plt import numpy as np# 定义数据 data [[1, 2, 3, 4, 5, 6, 7, 8], # 数据1[2, 2, 4, 4, 5, 5, 6,…

Spring Web MVC入门(6)

应用分层 在开发的过程中, 我们会发现, 程序的代码有时会很"杂乱", 如果后面的项目更大了, 那就会更加地杂乱无章(文件乱, 代码内容乱). 也基于此, 接下来让我们来学习一下应用分层. 也类似于公司的组织架构 公司初创阶段, 一个人身兼数职, 既做财务, 又做人事,还有…

十四、ReadWriteLock

ReadWriteLock 读写锁 又叫排他锁 如果使用互斥锁,一个线程在读,其他线程也不能读也不能写 换成读写锁的时候,读线程是读锁,写线程是写锁,写锁是排他的 在多线程大大提高效率,当一个线程在读的时候&…

当内外网的域名相同时,如何在外网解析同域名的网址

当内部网络和外部网络存在相同的域名,并且希望内部用户通过内部DNS服务器解析到外部网络上的该域名对应的公网IP地址时,需要在内部DNS服务器上采取一些特殊配置策略来实现这一目标。以下是一种通用的解决方案: 条件转发(Condition…

MT1490 修改字符串

原题链接:https://www.matiji.net/exam/brushquestion/490/778/B3FCFEC101BD05189BB74D522E019504 输入1个字符串, 如果其中小写字符多于大写字符,则将其全部转换为小写字符,如果大写字符多于小写字符,则全部转换为大写字符。 输入格式&…

Oracle数据库 利用RMAN备份

利用RMAN备份讨论 运用RMAN进行备份 运用RMAN进行还原与恢复 RMAN的日常管理 RMAN的恢复目录 一、RMAN的概念与体系结构 Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover) 数据库的 Oracle 工具。RMAN只能用于ORACLE…

重磅|国家能源局开展配电网安全风险管控重点行动

据国家能源局3月21日消息,为紧扣新形势下电力保供和转型目标,聚焦配电网安全运行、供电保障、防灾减灾和坚强可靠等方面安全风险,推动解决城乡配电网发展薄弱等问题,全面提升配电网供电保障和综合承载能力,国家能源局决…

Linux东方通下载及使用

解压文件 mkdir /usr/local/java 加压包拖进去 vi /etc/profile 复制路径修改路径 export JAVA_HOME/usr/local/java/jdk1.8.0_151 export CLASSPATH.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH$PATH:${JAVA_HOME}/bin 进入…

✅让我们用AI制作一个漂亮的头像吧

头像 头像是指在互联网上用于代表个人或实体的图像。在社区中,头像通常用于标识和区分用户,是用户身份的象征。 社区的头像有多种意义,不限于以下几点: 身份标识:社区头像可以让用户在互联网上更好地代表自己,帮助用…

Mamba 基础讲解【SSM,LSSL,S4,S5,Mamba】

文章目录 Mamba的提出动机TransformerRNN Mama的提出背景状态空间模型 (The State Space Model, SSM)线性状态空间层 (Linear State-Space Layer, LSSL)结构化序列空间模型 (Structured State Spaces for Sequences, S4) Mamba的介绍Mamba的特性一&#…

java分割等和子集(力扣Leetcode416)

分割等和子集 力扣原题链接 给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] …

外包干了6天,技术明显进步。。。

我是一名大专生,自19年通过校招进入湖南某软件公司以来,便扎根于功能测试岗位,一晃便是近四年的光阴。今年8月,我如梦初醒,意识到长时间待在舒适的环境中,已让我变得不思进取,技术停滞不前。更令…

面试算法-73-二叉树的最小深度

题目 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2 解 class Solu…

TC(totalCommander)配置快捷键

totalCommander 是一个非常流行的资源管理工具,如果我们有一些便捷的脚本,那么如何在totalCommander 中通过快捷键快速的调用/运行这个脚本呢?本文本就以 ssh工具 python脚本 为例,说明如何在totalCommander中配置快捷键&#xff…