高频面试题之Mysql索引

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 索引分类, 最左原则, 索引失效

index1.jpg

索引分类:

 主键索引:​  
     主键是一种唯一性索引,但它必须指定为​​PRIMARY KEY​​,每个表只能有一个主键。

​ 唯一索引:​
     索引列的所有值都只能出现一次,即必须​​唯一​​,值可以为​​空​​。

​ 普通索引 :​
     基本的索引类型,值可以为空,没有唯一性的限制。

​ 全文索引:​
      全文索引的索引类型为​​FULLTEXT​​。
      全文索引可以在​​varchar、char、text​​类型的列上创建。
      可以通过​​ALTER TABLE​​或CREATE INDEX命令创建。
      对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。
      ​​MyISAM​​支持全文索引,​​InnoDB​​在mysql5.6之后支持了​​全文索引​​。
      全文索引​​不支持中文​​​需要借​​sphinx(coreseek)​​​或​​迅搜<、code>技术处理中文。​​

联合索引的最左原则

# 使用组合索引的原因
--  效率高,减少查询开销,索引列越多,通过索引筛选出的数据越少
--  覆盖索引,MySQL可以直接通过遍历索引取得数据,而无需回表,这减少了很多的随机io操


#  最左匹配原则
   最左优先,在创建组合索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。复合索引很重要的问题是如何安排列的顺序,比如where后面用到c1, c2 这两个字段,那么索引的顺序是(c1,c2)还是(c2,c1)呢,正确的做法是,重复值越少的越放前面,比如一个列 95%的值都不重复,那么一般可以将这个列放最前面。另外,复合索引的字段数尽量不要超过 3个,一旦超过,要慎重考虑必要性。

索引失效的情况

1、like查询以“%”开头;
2、or语句前后没有同时使用索引;
3、组合索引中不是使用第一列索引;
4、在索引列上使用“IS NULL”或“IS NOT NULL”操作;
5、在索引字段上使用“not”,“<>”,“!=”
6、联合索引中有null值的列
7、联合索引没有用最左原则
8、查询语句中有类型转换
9、where条件查询中的索引列有函数或运算存在
10、如果内部任务全表扫描快过 索引检索, 索引失效

# 怎么查看sql语句是否 使用了索引查询
explain 关键字来查看
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
存储 关系型数据库 MySQL
Mysql索引总结(1)
Mysql索引总结(1)
|
1天前
|
SQL 关系型数据库 MySQL
MySQL8.0索引新特性
MySQL8.0索引新特性
|
1天前
|
存储 SQL 关系型数据库
MySQL 索引
MySQL 索引
|
6天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
26 6
|
7天前
|
存储 Oracle 关系型数据库
【MySQL面试题pro版-12】
【MySQL面试题pro版-12】
14 0
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL面试题pro版-10】
【MySQL面试题pro版-10】
13 1
|
7天前
|
缓存 关系型数据库 MySQL
【MySQL面试题pro版-9】
【MySQL面试题pro版-9】
20 1
|
3天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用
|
18天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
7天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
29 4