首页 > 数据库 >学习记录:MySQL索引

学习记录:MySQL索引

时间:2024-09-13 22:23:56浏览次数:11  
标签:Index 唯一性 记录 表中 查询 索引 MySQL 主键

索引的作用

  1. 加速数据检索:通过为数据库表创建索引,可以极大地减少数据库引擎在查询过程中需要扫描的数据量,从而显著提升数据检索的速度。像是字典的目录,快速定位到所查找的内容。

  2. 强化数据完整性:唯一索引(Unique Index)能够确保表中的某一列或列组合的值是唯一的,有效防止数据重复,而主键索引(Primary Key)更是将这一约束提升到了表级别的唯一性和非空性要求,

主要的索引类型

  1. 主键索引 (Primary Key Index):主键索引是表中每条记录的唯一标识,一个表只能有一个主键索引。主键索引保证了数据唯一性,确保每条记录的非空性。

  2. 唯一索引 (Unique Index):与主键索引类似,唯一索引也用于保证列或列组合中的值唯一,但区别在于唯一索引允许列中存在空值(NULL),并且一个表可以定义多个unique index

  3. 普通索引 (Index OR Non-unique Index):普通索引是最基本的索引类型,它不包含任何唯一性约束,主要用于提高查询效率。通过创建普通索引,可以加快数据检索速度,尤其是在数据量较大的情况下效果更为明显。

  4. 全文索引 (Full-text Index):全文索引专为处理大量文本数据而设计,能够实现对文本内容的快速搜索。

  5. 多列索引 ( Multiple-column Index):多列索引允许在单个索引中包含多个列,以支持更加复杂和灵活的查询条件。使用得当一个联合索引比得上多个唯一索引

优点:

  1. 提高查询效率:索引可以显著减少数据库查询时需要扫描的数据量,通过直接访问索引来快速定位所需数据,从而加快查询速度。

  2. 加速排序和分组:索引有助于加速ORDER BYGROUP BY等SQL操作,减少排序和分组的时间消耗。

  3. 确保数据唯一性和完整性:通过创建唯一索引或主键索引,可以确保表中数据的唯一性和完整性,避免重复数据或无效数据的存在。

 缺点:

  1. 占用空间:索引本身需要占用一定的存储空间。随着数据量的增加,索引所占用的空间也会增加,有时甚至索引的占用比得上数据本身的占用

  2. 降低写的性能:当对表中的数据进行插入、更新或删除操作时,索引也需要进行相应的维护,这可能会导致写操作的性能下降。尤其是在高并发写入场景下,维护成本大

  3. 优化难度:随着索引数量的增加,优化查询和索引的难度也会增加。

使用索引的原则

        1.需求唯一性的的字段
        2.经常需要条件查询的字段
       3.多表联查自动添加索引 多表联查最多不要超过三张
       4.经常使用order by 的列需要添加索引
       5.区分度不大没有必要添加索引 例如性别
       6.经常增删改的表不要添加索引

 数据库优化
        1.服务器调优
        2.避免索引失效

                1.联合索引 靠左原则 跳过失效

                2.模糊查询 失效

                3.where 后有内置函数 失效 4.类型自动转换时

                5.where 两个条件 右侧失效 范围相关放右边

                6.否定会失效(主键除外) !not <>

                7.OR 一个不走索引 都不走索引 建议两边都使用索引

                    
        3.避免多表联查 超过三张表=>添加冗余字段
        4.避免一张表上的数据过多 分库分表
联合索引 index(a,b,c)
        ab ba 全都走索引 MySQL内有优化器 自动交换位置 
        ac ca a走联合索引 c不走联合索引 有自己的索引走自己的索引
        bc cb 都不走联合索引 有自己的索引走自己的索引


其中MySQL优化器会自动选择最优查询,

EXPLAIN SELECT *FROM student_info WHERE student_id >1

按道理是走联合索引 但是优化器预计需要扫描表中大部分行时。查询优化器认为全表扫描比使用索引更快


 

标签:Index,唯一性,记录,表中,查询,索引,MySQL,主键
From: https://blog.csdn.net/fragilezz/article/details/142216134

相关文章

  • 2024.9.13训练记录
    下午ARC104模拟短时赛:T1、T2:T1签到题。T2签到题,\(O(n^2)\)乱做。但是实际上可以空间换时间开桶到\(O(n)\)。也非常简单。T3:考场没有做出。思考的关键在于想到可以对于区间单独判断是否满足条件。知道了如何判断区间是否满足条件后,可以做一次\(O(n)\)的\(dp\)。每次枚......
  • Windows下批处理文件导入sql文件到MySQL5.5.50
    用来试验的MySQL的版本为5.5.50run.bat::DOS的UTF-8字符集chcp65001@ECHOOFF::到MySQL下新建文件夹set/pvar="请输入MySQL安装路径(如“C:\ProgramFiles(x86)\MySQL\MySQLServer5.5”):"set/pdirsql="请输入sql文件路径(如“C:\Users\Administrator\Desktop”):"c......
  • 【MySQL】查询语句之inner、left、right、full join 的区别
     前言:    INNERJOIN和OUTERJOIN是SQL中常用的两种连接方式,用于从两表活多表中提取相关的数据。两者区别主要在于返回的结果集如何处理匹配与不匹配的行。目录1、INNERJOIN2、OUTERJOIN3、总结1、INNERJOIN    称为内连接,只有查询的几......
  • 为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
    在EffectiveJava中的第36条中建议用EnumSet替代位字段,在第37条中建议用EnumMap替换序数索引,为什么?EnumSet在EffectiveJava中的第36条中建议用EnumSet替代位字段36、用EnumSet替代位字段如果枚举类型的元素主要在Set中使用,传统上使用int枚举模式,通过不同的......
  • 自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计
    注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】文章目录自然语言处理系列六十八搜索引擎项目实战》搜索引擎系统架构设计搜索引擎项目代码实战总结自然语言处理系......
  • 为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
    在EffectiveJava中的第36条中建议用EnumSet替代位字段,在第37条中建议用EnumMap替换序数索引,为什么?EnumSet在EffectiveJava中的第36条中建议用EnumSet替代位字段36、用EnumSet替代位字段如果枚举类型的元素主要在Set中使用,传统上使用int枚举模式,通过不同的2的......
  • 基于SpringBoot+Vue+MySQL的家教管理系统
    系统展示用户前台界面管理员后台界面系统背景  传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装家教管理系统软件来发挥其高效地信息处理的作用,可以规范信......
  • 基于SpringBoot+Vue+MySQL的瑜伽馆管理系统
    系统展示用户前台界面管理员后台界面系统背景  本系统采用SpringBoot作为后端框架,Vue.js构建前端用户界面,MySQL作为数据库存储系统,实现了瑜伽馆的全面数字化管理。系统涵盖会员管理、课程预约、教练排班、收入统计等功能模块,旨在提升瑜伽馆运营效率,优化顾客......
  • 2024Mysql And Redis基础与进阶操作系列(7)作者——LJS[含MySQL 聚合、数学、字符创、日
    目录MySQL函数1.聚合函数 格式补充 示例将所有员工的名字合并成一行指定分隔符合并指定排序方式和分隔符2.数学函数(即用即查,重在融会贯通与运用)3.字符串函数(即用即查,重在融会贯通与运用)4.日期函数(即用即查,重在融会贯通与运用)5.控制流函数(即用即查,重在融会贯通与运用)if逻辑判......
  • MySQL5.7基于mysqldump、xtrbackup、innobackupex工具进行全量备份/恢复、增量备份/恢
    mysql全量备份脚本文章目录前言一、数据库备份分类二、为什么需要备份?三、备份工具示例1.逻辑备份工具1.1.使用场景1.2.备份操作示例1.3.恢复操作示例2.物理备份工具2.1.xtrbackup介绍2.2.使用场景2.3.安装percona-xtrabackup2.4.xtrbackup备份原理2.5.percona-xtraba......