第七章《索引》

第七章《索引》

1.mysql默认的查询方式是遍历整个表:
什么是索引:索引记录的是数据的的存储位置,他是一种特殊的数据结构,索引可以提高查询的效率,
他是独立于数据表之外的

MyISAM、InnoDB支持btree和b+tree索引,Memory支持btree和hash索引,每一个表至少
可以添加16个索引,总的索引长度至少256字节;

常用的索引类型
1.主键索引
2.唯一索引和普通索引
3.单列索引和组合索引
4.全文索引
5.空间索引

主键和唯一索引;不但可以提高查询效率,还对索引字段的值进行条件限制,unique唯一索引字段的值必须具有唯一性,primary key 主键索引字段的值是唯一且非空
其他的索引作用是提高查询效率
创建索引的语法;
1.在创建表的时候添加索引:
CREATE TABLE 表名 [字段名 数据类型] [ unique 唯一索引] [fulltext 全文索引] [spatial 空间索引] INDEX|KEY [索引名] 索引字段(length) [ASC|DESC]
2.给已经创建好的表添加索引;
(1)ALTER TABLE 表名 ADD[ unique 唯一索引] [fulltext 全文索引] [spatial 空间索引] INDEX|KEY [索引名 )] 索引字段 (length)[ASC|DESC]
(2)CREATE INDEX [ unique 唯一索引] [fulltext 全文索引] [spatial 空间索引] INDEX|KEY [索引名 ] ON 表名(索引字段);

创建普通索引普通索引是最基础的索引类型,没有唯一性限制,作用是只加快对数据的访问速度
在这里插入图片描述
查看索引

在这里插入图片描述
创建唯一索引唯一索引主要作用是减少查询索弓|列操作的执行时间,而且还对该列的值进行唯一性限制,但允许有空值。
在这里插入图片描述
单列索引;
普通索引包含单列和组合索引;单列索引就是给数据表中的某一列添加索引,一张表中可以添加多个单列索引;
在这里插入图片描述
组合索引:
是在多个字段上创建一个索引,遵循最左前缀原则。比如现在有一个组合索引(id,name,age),实际作用相当于添加了三个索引:
(id), (id,name),(id,name,age)
在这里插入图片描述
全文索引:
FULLTEXT 只有myisam引擎支持全文索引,并且只为并且只为char/varchar/text列添加。索引总是对整个列进行,不支持局部索引,适合大型数据表的创建
在这里插入图片描述
空间索引(spatial)
只有myisam引擎支持空间索引

在这里插入图片描述
在这里插入图片描述
在已经存在的表上创建索引;
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX [索引名] 索引字段(length);
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名(索引字段);
在这里插入图片描述
在这里插入图片描述
见证查询有没有用到索引:explain的用法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除索引:
ALTER TABLE DROP INDEX 索引名;
在这里插入图片描述
2.drop index 索引名 on 表名;

创建索引的规则;
(1)创建索引并非越多越好;
(2)数据量小的表最好不要创建索引;
(3)避免对经常更新的数据创建索引;
(4)在条件表达式中经常用到的不同值较多的列创建索引(where子句中常用的字段);
(5)当唯一性是某种数据本身的特征时,我们创建唯一索引;
(6)主键本身就是索引;
(7)在频繁进行排序或分组的列上建立索引;如果排序的列有多个还可以创建组合索引

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101971.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 4.Python中条件语句使用方法(if语句、if嵌套)

    4.Python中条件语句使用方法(if语句、if嵌套)Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:1.if条件语句的基本用法:if判断条件:执行语句……else:执行语句……其中”判断条件”成立时(非零),则执行后…

    2022年9月25日
    3
  • 怎么设置ie兼容性视图设置_ie浏览器兼容性视图怎么设置

    怎么设置ie兼容性视图设置_ie浏览器兼容性视图怎么设置【关键词】:IE兼容性视图【适用版本】:FusionAccess各版本【故障模式】:兼容性/应用软件兼容性【问题现象】:通过域策略和用户配置文件,设定IE的兼容性视图后,新发放虚拟机兼容性视图设置没有效果兼容性视图设置界面:工具->兼容性视图设置域策略配置界面:【告警信息】:无【问题分析】:通过processmonitor抓取IE兼容性视图设置更改的注册表项,通过脚本导入到当前登录用户…

    2025年10月4日
    3
  • spring boot 加密_springboot 密码加密

    spring boot 加密_springboot 密码加密首先介绍一下jasypt的使用方法可以参考下面这篇文章:Get史上最优雅的加密方式!没有之一!版本对应的坑使用的时候还是遇到一个坑,就是jasypt的版本与springboot版本存在对应情况。可以看到jasypt是区分java7和java8的,也存在依赖spring版本的情况。自己尝试了一下在使用jasypt-spring-boot-starter的前提下 j…

    2022年9月26日
    3
  • translate3d模拟滚动条

    translate3d模拟滚动条做移动端页面,通常是不用原生的scroll,而是用translate3d来模拟,原因主要是原生的scroll对移动端的支持并不是很好,样式也不好看(有滚动条出现),用translate3d来模拟还可以调用GPU来加速,提高性能。html:

    2025年7月12日
    5
  • 4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)[通俗易懂]

    4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)[通俗易懂]知其然,知其所以然:4hutool源码分析:DateUtil(时间工具类)-格式化时间

    2025年7月3日
    2
  • MySQL的JDBC连接

    MySQL的JDBC连接MySQL的JDBC连接MySQL的JDBC概念MySQL的JDBCJDBC添加数据封装连接工具更新数据和事务删除数据查询数据MySQL的JDBC概念JDBC是JavaDatabaseConnective的缩写,表示使用Java去连接数据库进行数据操作的过程MySQL的JDBC创建动态项目-以eclipse为例,首先要创建动态项目连接开发包(在www.mvnrepositor…

    2022年7月17日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号