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/612013/

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

(0)

大家都在看

  • Nginx禁止ip加端口访问

    使用 iptables 限制对应端口,再利用Nginx将80端口转发到对应端口 CentOS7默认的防火墙是 firewalle,先看看服务器中有没有安装 iptables [ro…

    Linux 2023年5月27日
    093
  • linx命令之ln 软连接 硬链接

    ln(全称:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 当需要在不同的目录,用到相同的文件时;不需要在每一个需要的目录下…

    Linux 2023年5月27日
    0102
  • LVS负载均衡

    LVS负载均衡 LVS负载均衡 一、LVS是什么 二、LVS的作用 三、lvs的三种工作模式 1.基于NAT的LVS模式负载均衡 2.基于TUN模式的LVS负载均衡 3.LVS(D…

    Linux 2023年6月6日
    098
  • 1:文件与目录

    CD 切换当前工作目录 mkdir 创建目录 re -dir 删除目录 pwd 打印当前工作目录 绝对路径和相对路径 硬链接 和软链接 CP拷贝 MV 移动 dirname 和 b…

    Linux 2023年6月7日
    0142
  • 用户管理

    用户组 种类 基本组: 一个用户一定要有一个基本组 ,且只有一个 附加组: 一个用户可以没有附加组,一个用户可以有多个附加组 分别基本组和 附加组?[root@localhost …

    Linux 2023年6月6日
    0156
  • Xshell小技巧

    鼠标右键粘贴 工具->选项->鼠标->向右按钮->(paste the clipboard contents.) 选定文本自动复制到剪贴板 工具->选…

    Linux 2023年5月28日
    0116
  • 11-K8S部署普罗米修斯

    K8S-Kubernetes 集群部署 Prometheus 和 Grafana 1.实验环境 控制节点/master01 192.168.80.20 工作节点/node01 19…

    Linux 2023年6月13日
    088
  • 阿里云Linux-Centos8安装mysql8

    1. 安装MySQL 依次执行以下&#x…

    Linux 2023年6月14日
    094
  • windows下redis配置密码

    redis安装后目录如下: 最简单的启动方式是直接双击redis-server.exe 这样启动会有个问题,一旦你把命令行窗口关闭 redis也会被关闭,所以我们需要把它注册成服务…

    Linux 2023年5月28日
    0105
  • bash怎么调用sql并保存结果

    mysql -uroot -pP@ssw0rd123.abc -h127.0.0.1 -P3306 -e \‘select c.TABLE_SCHEMA ,c.TABL…

    Linux 2023年6月7日
    0176
  • 使用JMeter和Zabbix进行压力测试

    Zabbix JMeter 目标 reference Zabbix Zabbix区分探针端、服务端、数据库、WEB前端等多个组件,如果你是在企业内使用,尽量使用运维同学搭建好的环境…

    Linux 2023年6月6日
    097
  • 网络安全之浅谈攻击

    最近大家也关注到了新闻,USA又对我国的一些总要的事业单位和网络基础设施进行的非法的攻击和渗透,窃取了大量的数据。可见看似和平静的水面,其实一直都是暗藏波涛,网络安全又被提摆到公众…

    Linux 2023年6月6日
    085
  • ajax跨域问题

    public class CrosFilter implements Filter { @Override public void destroy() { // TODO Auto…

    Linux 2023年6月7日
    0104
  • Linux 目录挂载服务

    Linux 服务器挂载文件目录通常有三种形式,手动挂载、自动挂载、Autofs 自动挂载,下面对这三个挂载做一下介绍,接受一下这三个区别以及使用场景: 准备服务器和客户端: ser…

    Linux 2023年6月6日
    097
  • archLinux 配置用户

    archlinux 启动之后只有默认的root用户,首先介绍下系统启动到登录需要的步骤 1.系统通过systemd 以pid为1初始化系统,启动系统用户和系统必要的服务,(这一步目…

    Linux 2023年6月13日
    084
  • Redis使用Swap,但系统可用内存充足

    最近生产环境遇到一个很奇怪的问题,系统内存32G,redis使用8G左右,剩余的内存都被系统cache使用,从表面上看系统可用内存有20G左右。但是系统运行过程中,redis时不时…

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