索引–加快MySQL查询

1.索引的描述

索引在MySQL中也叫做”键”,保存着数据位置的信息;

其作用是为了加快数据库的查询速度;

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

2.索引的使用

添加索引

alter table 表名 add index 索引名(字段名);

#案例

alter table classes add index my_name(name);
#给classes表中的name列添加名为my_name的索引

主键会自动创建索引,外键约束也会自动创建索引

删除索引

drop index 索引名 on 表名;

#案例

drop index my_name on classes;
#删除classes表中的my_name索引

添加联合索引

语法

联合索引又叫复合索引,是MySQL的InnoDB引擎中的一个索引方式,如果一个系统频繁地使用相同的几个字段查询结果,就可以考虑建立这几个字段的联合索引来提高查询效率。

alter table 表名 add index 索引名(字段名1,字段名2);

复制

最左前缀原则

在使用联合索引时要注意有个最左前缀原则,最左前缀原则就是要考虑查询的字段的顺序,只有遵守这个原则才能最大地提高查询的效率。

比如index(name,age)支持name或者name,age组合查询,不支持age单独查询

select * from students where name = '张三';                 #使用了联合索引
select * from students where name = '张三' and age = 10;    #使用了联合索引
select * from students where age = 10;                      #没有使用联合索引

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/5933

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年8月16日 下午6:17
下一篇 2022年8月17日 下午3:03

相关推荐

  • 数据库压力测试

    一、前言 在前面的压力测试过程中,主要关注的是对接口以及服务器硬件性能进行压力测试,评估请求接口和硬件性能对服务的影响。但是对于多数Web应用来说,整个系统的瓶颈在于数据库。 原因很简单:Web应用中的其他因素,例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现性能的提高。而对于MyS…

    2023年3月21日
    19800
  • Centos7.6安装MySQL(超详细)

    1、查看是否已经安装Mysql rpm -qa | grep mysql 我已经安装过了 如果你查看出来有东西,可以使用下面命令将其删除 rpm -e 文件名 如果提示warning: waiting for transaction lock on /var/lib/rpm/.rpm.lock,则需要执行 2、下载官方Mysql包 wget -i -c ht…

    2022年6月9日
    58200
  • Redis 常用命令

    一、redis启动: Redis 连接命令 二、redis keys命令 三、reids字符串命令 四、Redis hash 命令 五、Redis 列表命令 六、Redis 集合命令 七、Redis 有序集合命令 八、Redis 发布订阅命令 九、Redis 事务命令 十、Redis 脚本命令 十一、Redis 服务器命令

    2022年7月29日
    34400
  • 数据库报错:Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure

    原因1.因为SSL连接原因(大部分人的原因)因为MySQL在高版本需要指明是否进行SSL连接。有可能你 pom 文件引入的 MySQL 依赖版本是MySQL5.7及以上 这些的时候,你就需要指定SSL连接,如果你不知道,默认就是开启,所以就会出现上面的错误。 2.因为数据库连接超时原因当数据库重启或数据库空闲连接超过设置的最大timemout时间,数据库会强…

    2023年8月1日
    16900
  • MySQL 中 DELETE 语句中可以使用别名么?

    某天,正按照业务的要求删除不需要的数据,在执行 DELETE 语句时,竟然出现了报错! 背景 某天,正按照业务的要求删除不需要的数据,在执行 DELETE 语句时,竟然出现了报错(MySQL 数据库版本 5.7.34): 这就有点奇怪了,因为我在执行删除语句之前,执行过同样条件的 SELECT 语句,只是把其中的 select * 换成了…

    2023年11月22日
    2800

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信