NoteOfMySQL-07-索引

1. 索引概述

创建索引的目的是为了优化数据库的查询速度,不添加索引的情况下需要遍历所有数据才能进行删、查、改等操作。

2. 索引存储类型

存储类型 支持的存储引擎 B型树(BTREE)索引 InnoDB、MyISAM 哈希(HASH)索引 MEMORY

3. 索引的优缺点

  • 加快数据检索速度。

  • 增加创建索引、维护索引的时间。

  • 索引需要占据物理空间。
  • 增加索引时,会提高检索性能,但会降低修改性能;减少索引相反。

4. 索引的特征

保证唯一性,可以创建主键约束或唯一性约束,而不能只单单创建唯一性索引。

复合索引是一个索引创建在两个列或者多个列上,搜索时,以这几个列作为关键值。

  • 最多可以把16个列合并成一个单独的复合索引。
  • 复合索引中,所有的列必须来自同一个表,不能跨表创建复合索引。
  • 复合索引中,列的排序顺序是很重要的,不能调换。

5. 索引分类

text、image、bit数据类型的列不应增加索引。

普通索引可以创建在任何数据类型中,其值的约束由字段本身的完整性约束条件决定。

设置索引唯一。主键就是一种特殊的唯一性索引。

全文索引只能创建在CHAR、VARCHAR、TEXT类型的字段上,全文索引可以提高对于数据量较大的字符串类型的查询速度。
数据库从3.23.23版的MyISAM搜索引擎开始支持全文索引,直到5.6版,InnoDB也支持全文索引。

在单列上创建索引。

在多列上创建索引。

空间索引只能创建在空间数据类型上,目前只有MyISAM搜索引擎支持空间检索,而且检索字段不能为null。MySQL中的控件数据类型包括GEOMETRY、POINT、LINESTRING、POLYGON等。

1. 创建索引

-- 创建表时
create table table_name (
    ...
    [UNIQUE | FULLTEXT] INDEX | key [index_name] (state [(length)] [ASC|DESC])
);
-- 创建表后
create [UNIQUE | FULLTEXT] INDEX index_name on table_name(state[(length)] [ASC | DESC]);

alter table table_name add [UNIQUE | FULLTEXT] INDEX|KEY [index_name] (state[(length)] [ASC|DESC]);

2. 查看索引

-- 法一
show index from table_name[ from db_name];
-- 法二
MySQL show -k db_name table_name;

返回的字段 说明 table 表名称 Non_unique 索引是否包含重复词 key_name 索引名称 Seq_in_index 索引中的列序号 Column_name 列名称 collation 列在索引中的存储方式 cardinality 索引中唯一值的数目的估计值 sub_part 部分被编入索引?数目:NULL packed 关键字如何被压缩 null 列中含有NULL为YES,否则为NO Index_type 索引方法,如Btree、FullText、Hash、Rtree comment 评注

3. 删除索引

-- 法一
drop index index_name on table_name;
-- 法二
alter table table_name drop index index_name;

Original: https://www.cnblogs.com/bpf-1024/p/14059640.html
Author: 步平凡
Title: NoteOfMySQL-07-索引

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572728/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Docker-Compose实现Mysql主从

    1. 简介 通过使用 docker-compose搭建一个主从数据库,本示例为了解耦 将两个server拆分到了两个compose文件中,当然也可以放到一个compose文件中 演…

    Java 2023年6月7日
    082
  • 一、《微服务:从设计到部署》–简介

    走向单体地狱: 有一个成功的关键业务应用,它已经发展成为一个只有少数开发人员能够理解的巨大单体。它使用了过时、非生产性技术编写,使得招聘优秀开发人员变得非常困难。应用变得难以扩展,…

    Java 2023年6月5日
    097
  • Nginx核心知识100讲学习笔记(陶辉)Nginx架构基础(四)

    一、红黑树 1、红黑树 2、红黑树复杂度 3、使用红黑树的模块 1、本地内存做的红黑树 bash;gutter:true; ngx_conf_module ngx_event_ti…

    Java 2023年5月30日
    076
  • 利用privoxy劫持http网站数据,插入广告,获取用户名,密码

    看了几篇privoxy的文章,感觉讲的都不详细,在此整理一遍。 注:本文下面的内容仅讨论思路,作为技术交流之用,请勿用作非法途径. Privoxy是一款带过滤功能的代理服务器,针对…

    Java 2023年6月16日
    065
  • java常规技术题

    一:线程的基本状态以及状态之间的关系1.新建状态:新创建了一个线程对象2.就绪状态:也叫可运行状态,线程对象创建后,其他线程调用了该对象的start()方法。3.运行状态:就绪状态…

    Java 2023年6月5日
    080
  • Spring boot——Actuator 详解

    management.health.status.http-mapping.FATAL=503 如果你需要更多的控制,你可以定义自己的 HealthStatusHttpMapper…

    Java 2023年5月30日
    069
  • Java线程池 / Executor / Callable / Future

    为什么需要线程池? 每次都要new一个thread,开销大,性能差;不能统一管理;功能少(没有定时执行、中断等)。 使用线程池的好处是,可重用,可管理。 Executor 4种线程…

    Java 2023年5月29日
    053
  • Nginx下css的链接问题

    放在 Nginx 下的网页代码,在链接外部 css 文件时,可能出现没有链接成功的问题。需要在 nginx.conf 里的 http 下添加一行。 http { <span …

    Java 2023年5月30日
    068
  • SQL数据分组后取第一条数据——PARTITION BY

    SQL SERVER (mssql) 数据分组后取第一条数据 SQL 如下 找状态=1的数据,按 HospitalId,DeptId 组合并倒序排序,每组里面取第一条数据 SELE…

    Java 2023年6月14日
    055
  • Springboot配置全局model(ModeMap)信息

    有时候我们给所有页面都显示站点信息,可以直接全局配置ModelMap信息 然后页面就可以直接获取 GlobalConfig.java import org.springframew…

    Java 2023年5月30日
    076
  • Java基础–static关键字

    不管是平时阅读源代码,还是笔试、面试中, static关键字还是经常被问道,这篇文章主要来重新复习一下该关键字。 一、static用途 static方便在没有创建对象的时候调用方法…

    Java 2023年6月5日
    091
  • 使用java自带的定时任务ScheduledThreadPoolExecutor

    ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类; JDK api里是这么说的: 一旦启用已延迟的任务就执行它,但是有关何时启用,…

    Java 2023年5月29日
    063
  • 虚拟机克隆以后出现“需要整合虚拟机磁盘”的解决方法

    问题描述 在虚拟机克隆完毕以后,原始虚拟机提示”需要整合虚拟机磁盘” 在”任务与事件”栏中看到以下信息 ; 解决方法 从上面可以看到…

    Java 2023年5月30日
    088
  • Spring中基于注解的AOC

    AOP注意事项 切面类和目标类都需要交给IOC容器管理切面类必须通过@Aspect注解标识为一个切面在spring的配置文件中设置 * 1.在切面中,需要通过指定的注解将方法标识为…

    Java 2023年6月16日
    050
  • 技能篇:关于缓存数据的一致性探讨

    为了更快响应请求,减少不必要的查询,加速数据的处理,数据缓存是我们日常开发绕不过去的环节 关注公众号,一起交流,微信搜一搜: 潜行前行 缓存的意义 数据的保存,离不开磁盘或者内存的…

    Java 2023年6月5日
    068
  • java的jdk版本环境变量配置为1.6 为什么java -version查看版本是1.8

    原因:先装的jdk1.6,后装的jdk1.8,导致的注册表中配置的是1.8。 解决办法: 1、卸载jdk1.8,一般可以,如果还不行,再重新装jdk1.6; Original: h…

    Java 2023年6月5日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球