MySQL索引

1.索引的概念

索引是一个排序的列表,包含索引字段的值和其对应的行记录的数据所在的物理地址

2.索引的作用

加快表的查询速度,还可以对字段排序

3.索引的副作用

会额外占用磁盘空间

更新包含索引的表会花费更多的时间,效率会更慢

4.索引的工作原理

1.没用索引的情况下,要根据条件查询某行数据时,需要先扫描全表,再去定位某行数据

2.有索引后,会先通过查询条件(字段的值),找到其索引对应的行所记录的数据的物理地址,然后根据物理地址访问相应的行的记录的数据

3.就像根据书目录上的页码快速找到所需的内容

5.创建索引的原则依据

1.表中的记录行数较多时,一般超时300行的表建议要有索引

2.建议在表中的主键字段、外键字段、多表连接使用的公共关键字段、唯一性较好的字段、不经常更新的字段、经常出现在(where/group by/order by)子语句的字段或短小的字段上面创建索引

3.不建议在唯一性较差的字段、更新太频繁的字段、大文本字段上面创建索引

6.索引的类型

普通索引

create index 索引名 on 表名 (字段);

alter table 表名 add index 索引名 (字段);

唯一索引

create unique index 索引名 on 表名 (字段);

alter table 表名 add unique 索引名 (字段);

主键索引

alter table 表名 add primary key (字段);

组合索引

create index 索引名 on 表名(字段1,字段2……);

alter table 表名 add index 索引名(字段1,字段2……);

create unique index 索引名 on 表名(字段1,字段2,……);

alter table 表名 add unique 索引名(字段1,字段2,……);

select …… from 表名 where 字段1=xx and 字段2=xx …… ; #用and 做逻辑运算符多字段查询时,要创建组合索引且要满足最左原则

#or做逻辑运算符多字段查询时,所有字段都要单独创建单列索引

全文索引

create fulltext index 索引名 on 表名 (字段);

alter table 表名 add fulltext 索引名(字段);

支持模糊查询 select …… from 表名 where match (字段) against ('单词');

查看索引:

show create table 表名;

show index from 表名;或show keys from 表名;

删除索引:

drop index 索引名 on 表名;

alter table 表名 drop index 索引名;

alter table 表名 drop primary key;

如果遇到select语句查询速度慢,该怎么办?

1.先使用explain分析select语句,看key字段,确定select语句是否使用了索引,或索引使用是否正确

2.再根据 select 语句中 where 子语句 使用的条件字段创建相应的单列索引或者组合索引,组合索引要满足最左原则

面试题

1.先查看cpu等物理硬件

2.mysql配置文件是否做了优化

3.创建相应的索引

MySQL索引是一种数据结构,可以帮助MySQL快速定位和访问表中的数据。使用索引可以提高查询效率,降低数据库的负载。下面是MySQL索引的一些基本概念和使用方法: 1. 索引类型 MySQL支持多种类型的索引,包括B树索引、哈希索引、全文索引等。其中,B树索引是最常用的一种,也是默认的索引类型。B树索引可以用于精确匹配和范围查询,而哈希索引主要用于等值查询,全文索引则用于文本检索。 2. 索引创建 可以在创建表时指定索引,例如: ``` CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50), INDEX idx_email (email) ); ``` 也可以在已有的表上添加索引,例如: ``` ALTER TABLE users ADD INDEX idx_name (name); ``` 3. 索引使用 查询语句中可以使用WHERE子句和ORDER BY子句来利用索引,例如: ``` SELECT * FROM users WHERE email = 'example@example.com'; SELECT * FROM users WHERE name LIKE 'John%' ORDER BY id DESC; ``` 需要注意的是,索引并不是越多越好,过多的索引会占用过多的磁盘空间并降低写操作的性能。因此,需要根据实际情况选择合适的索引。同时,还需要定期对索引进行维护,包括优化查询语句、删除不必要的索引等。 4. 索引优化 MySQL提供了一些工具来优化索引,例如EXPLAIN命令可以帮助分析查询语句的执行计划,找出慢查询和不必要的全表扫描。可以使用OPTIMIZE TABLE命令来优化表的索引和碎片,从而提高查询性能。还可以使用缓存来避免频繁的查询操作,例如使用Memcached或Redis等缓存工具。 以上就是MySQL索引的一些基本概念和使用方法,需要根据实际情况进行选择和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值