MySQL索引设置以及查询效率优化

发布时间:2025-05-06 13:23

学会利用学术搜索引擎优化技巧,提高搜索效率 #生活乐趣# #阅读乐趣# #学术阅读资源#

MySQL索引原理以及查询优化 : https://www.cnblogs.com/bypp/p/7755307.html

查看MySQL的当前存储引擎及命令介绍: https://www.cnblogs.com/zhming26/p/6322353.html 

查看当前MySQL存储引擎:   mysql> show engines;

索引设置:

#1 索引种类:

1. Fulltext 全文本搜索索引:用于搜索长篇文章。

2. Unique 唯一索引:  

主键索引:primary key :加速查找+约束(不为空且唯一)

唯一索引:unique:加速查找+约束 (唯一)

3. 联合索引:

-primary key(id,name):联合主键索引

-unique(id,name):联合唯一索引

-index(id,name):联合普通索引

4. Normal 普通索引:加快搜索。

5. Spatial 空间索引。

#2 索引功能

1. 加快搜索;

2. mysql中的primary key,unique,联合唯一也都是索引,这些索引除了加速查找以外,还有约束的功能

#3 索引的两大类型hash与btree

#我们可以在创建上述索引的时候,为其指定索引类型,分两类

hash类型的索引:查询单条快,范围查询慢

btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它)

#不同的存储引擎支持的索引类型也不一样

InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;

MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;

Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引,不支持 Full-text 索引;

NDB 支持事务,支持行级别锁定,支持 Hash 索引,不支持 B-tree、Full-text 等索引;

Archive 不支持事务,支持表级别锁定,不支持 B-tree、Hash、Full-text 等索引;

1)索引方法 btree  可以用于“ >、 <  、=”查询 ,如果查id=1000的数据 建立索引后 二分查找最多13次就可以查出相应的数据;

2)hash 不能做order by排序 不能做 用like模糊查询。

#4 慢查询优化的基本步骤

0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE

1.where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高

2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)

3.order by limit 形式的sql语句让排序的表优先查

4.了解业务方使用场景

5.加索引时参照建索引的几大原则

6.观察结果,不符合预期继续从0分析

提升MySQL查询效率及查询速度优化的4个方法: http://www.alixixi.com/biancheng/a/2018090667341.shtml

网址:MySQL索引设置以及查询效率优化 https://www.yuejiaxmz.com/news/view/934918

相关内容

MySQL索引原理及慢查询优化(转载)
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
数据库 = MySQL 索引以及原理
MySQL慢查询优化
MySQL上亿数据查询优化:实践与技巧
MySQL使用limit 1提高sql查询效率
MySQL优化:12种提升SQL执行效率的有效方法
优化索引提升查询效率
MySQL常用优化指南,及大表优化思路(值得收藏)
一份平民化的MySQL性能优化指南

随便看看