1.概念
索引是一种特殊的文件,包含着对数据表里所有记录的引用指针,可以对表中的一列或者多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现. (这里对于索引也只是简单了解,写了些皮毛) 更浅显易懂的来说:数据库的数据保存在硬盘,硬盘不知道具体保存在哪个位置,索引就是用来告诉硬盘数据在哪个位置.
数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系 索引所起的作用类似书籍目录,可用于快速定位,检索数据 索引对于提高数据库的性能有很大的帮助
说明:某张表可以给一个字段或多个字段创建索引
使用查询语句时,根据索引字段来做条件查询就可能使用到索引,提高查询速度.
某些语句不能使用到索引,比如:
student(id,name,email),name创建索引
where name like ‘%哈哈%’ 和 name is null 不能使用索引
name=‘张三’ 能使用到
索引需要占用一定的磁盘空间,插入/修改/删除操作,索引也需要更新,数据量越大,索引更新的时间越长 所以说:也不是索引建的越多越好
要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点:
满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率
反之,如果非条件查询列,或经常做插入,修改操作,或磁盘空间不足时,不考虑创建索引
创建主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FORGIGN KEY)时,会主动创建对应列的索引.
show index from 表名;
对于非主键、非唯一约束、非外键的字段,可以创建普通索引
create index 索引名 on 表名(字段名);
drop index 索引名 on 表名;
实现登录功能,数据库有user表,username(账号),password(密码)
从实现上看:
页面上,用户输入账号密码,Java程序接收到这个账号,这个密码数据库sql的实现,就有两种方式:
(1)根据账号+密码,条件查询
(2)根据账号查询,Java程序获取到这条数据,比较/校验密码
问题:登录功能发现很慢,如何优化?
如果sql是第一种查询方式,创建账号+密码两个字段的索引
第二种查询方式,创建账号一个字段的索引
准备测试表:

但是在客户端连接MySQL服务器直接查看表格数据并没有变化:

只有在commit完成之后才会客户端才会显示:

到此这篇关于MySQL索引事务详细解析的文章就介绍到这了,更多相关MySQL 索引事务内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!