索引(2)

本文详细讲解了索引在MySQL中的实现原理,何时选择添加索引,如何创建和删除索引,以及如何通过`EXPLAIN`语句检查SQL使用索引。重点介绍了主键和唯一约束自动创建索引的情况,并提供了关于索引策略和性能优化的建议。
摘要由CSDN通过智能技术生成

目录

索引的实现原理

假设有一张用户表:t_user

提醒1:

提醒2:

提醒3:

什么条件下,我们会考虑给字段添加索引呢?

索引怎么创建?怎么删除?语法是什么?

创建索引

删除索引

在mysql当中,怎么查看一个SQL语句是否使用了索引进行检索?


索引的实现原理

在mysql当中,主键字段上,以及unique字段上都会自动添加索引的!!!!

假设有一张用户表:t_user

提醒1:

在任何数据库当中主键上都会自动添加索引对象。id字段上自动会有索引,因为id是PK。另外在mysql当中,一个字段上如果有unique约束的话,也会自动创建索引对象。

提醒2:

在任何数据库当中,任何一张表的任何一条记录在硬盘存储上都有一个硬盘的物理存储编号。

提醒3:

在mysql当中,索引是一个单独的对象,不同的存储引擎以不同的形式存在,在MyISAM存储引擎中,索引存储在一个.MYI文件中。在InnoDB存储引擎中索引存储在一个逻辑名称叫做tablespace的当中。在MEMORY存储引擎当中索引被存储在内存当中。不管索引存储在哪里,索引在mysql当中都是一个树的形式存在。(自平衡二叉树:B-Tree)

什么条件下,我们会考虑给字段添加索引呢?

  • 条件1:数据量庞大(到底有多么庞大算庞大,这个需要测试,因为每一个硬件环境不同)
  • 条件2:该字段经常出现在where的后面,以条件的形式存在,也就是说这个字段总是被扫描。
  • 条件3:该字段很少的进行DML(insert delete update)操作。(因为DML之后,索引需要重新排序)

建议不要随意添加索引,因为索引也是需要维护的,太多的话反而会降低系统的性能。

建议通过主键查询或者通过unique约束的字段进行查询,效率是比较高的。

索引怎么创建?怎么删除?语法是什么?

创建索引

create index emp_ename_index on emp(ename);

给emp表的ename字段添加索引,起名:emp_ename_index


删除索引

drop index emp_ename_index on emp;

将emp表上的emp_ename_index索引对象删除。

在mysql当中,怎么查看一个SQL语句是否使用了索引进行检索?

explain select * from emp where ename = 'KING';

type=ALL。扫描了14条记录,说明没有使用索引

create index emp_ename_index on emp(ename);

给emp表中的ename字段添加索引

explain select * from emp where ename = 'KING';

使用了索引,只扫描了1条记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值