IE盒子

搜索
查看: 138|回复: 1

JAVA小灶之MYSQL-02

[复制链接]

4

主题

7

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2022-9-23 09:54:58 | 显示全部楼层 |阅读模式
MySQL索引篇:
索引简单可理解为:书籍的目录。
索引的优势和劣势

优势:
可以提高数据检索的效率,降低数据库的IO成本,类似于书的目录。 -- 检索 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。 --排序
被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只是组合索引的排序要复杂一 些。 如果按照索引列的顺序进行排序,对应order by语句来说,效率就会提高很多。 where 索引列 在存储引擎层 处理
劣势:
索引会占据磁盘空间
索引虽然会提高查询效率,但是会降低更新表的效率。比如每次对表进行增删改操作, MySQL不仅要保存数据,还有保存或者更新对应的索引文件。
哪些情况需要创建索引

1、主键自动建立唯一索引
2、频繁作为查询条件的字段应该创建索引
3、多表关联查询中,关联字段应该创建索引 on 两边都要创建索引
4、查询中排序的字段,应该创建索引 B + tree 有顺序
5、覆盖索引 好处是? 不需要回表 组合索引
6、统计或者分组字段,应该创建索引
哪些情况不需要创建索引

1、表记录太少 索引是要有存储的开销
2、频繁更新 索引要维护
3、查询字段使用频率不高

查看执行计划:

explain+sql语句:
explain出来的信息有10列,分别是
id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra
select_type:
simple
表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且 只有一个
primary
一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary。且只 有一个
subquery
除了from字句中包含的子查询外,其他地方出现的子查询都可能是subquery
dependent subquery
与dependent union类似,表示这个subquery的查询要受到外部表查询的影响
union
union连接的两个select查询,第一个查询是PRIMARY,除了第一个表外,第二个以后的表select_type 都是union
table :
显示的查询表名,如果查询使用了别名,那么这里显示的是别名 如果不涉及对数据表的操作,那么这显示为null 如果显示为尖括号括起来的就表示这个是临时表,后边的N就是执行计划中的id,表示结果来自于 这个查询产生。 如果是尖括号括起来的<union M,N>,与类似,也是一个临时表,表示这个结果来自于union查 询的id为M,N的结果集。
type:
依次从好到差:
system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery, index_subquery,range,index_merge,index,ALL
索引失效:

重点关注,编写sql的时候重点关注这几句话:

回复

使用道具 举报

2

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 3 天前 | 显示全部楼层
学习下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表