首页 > 数据库技术 > 详细

SQL中的索引

时间:2020-07-21 22:05:22      阅读:64      评论:0      收藏:0      [点我收藏+]

概述

  • 索引(index)作用:
    相当于一本字典目录,提高程序的检索/查询效率,表中每一个字段都可添加索引。
  • 主键自动添加索引:
    主键和具有unique约束的字段自动会添加索引。能够通过主键查询的尽量通过主键查询,效率较高。
  • 存储地址
    索引和表相同,都是一个对象,表是存储在硬盘文件中的,那么索引也是表的一部分,索引也存储在硬盘文件中。
  • MySQL数据库中表的检索方式有2种:
    第一种:全表扫描(效率较低)
    第二种:通过索引检索(提高查询效率)
  • 什么情况下适合给表中字段添加索引?
    1、该字段数据量庞大;
    2、该字段很少的DML操作;(由与索引也需要维护,DML操作多的话,也影响检索效率)(数据一旦修改,索引需要重新排序)
    3、该字段经常出现在where条件中。
  • 查看SQL语句的执行计划
EXPLAIN SELECT
	id,
	`name` 
FROM
	t_user 
WHERE
	`name` = ‘lisi‘;

技术分享图片

索引的应用

创建索引
  • 语法结构:
    a)create index 索引名 on 表名(列名)
    b)create unique index 索引名 on 表名(列名)
    注:添加unique表示在该表中的该列添加一个唯一性约束。
  • 示例:
create index dept_dname_index on t_user(name);

再查看解释:
技术分享图片

查看索引
  • 语法结构:
    show index from 表名;
  • 示例:
show index from dept;

技术分享图片

删除索引
  • 语法结构:
    drop index 索引名 on 表名;
  • 示例:
drop index dept_dname_index on t_user;

索引的实现原理

索引底层采用的数据结构是:B + Tree

  • 索引的实现原理?
    通过B + Tree缩小扫描范围,底层索引进行了排序、分区,索引会携带数据在表中的“物理地址",最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据。效率是最高。
  • 示例:
    select ename from emp where ename =‘SMITH‘;
    通过索引转换为:
    select ename from emp where 物理地址 = 0x3;
  • 索引的分类
    单一索引:给单个字段添加索引
    复合索引:给多个字段联合起来添加1个索引
    主键索引:主键上会自动添加索引
    唯一索引:有unique约束的字段上会自动添加索引
  • 索引什么时候失效?
    模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。

SQL中的索引

原文:https://www.cnblogs.com/yu011/p/13356937.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!