mysql优化1——索引

 1.SQL慢原因

      1.1 查询语句写的太烂了

      1.2 索引失效(单值索引,复合索引)

     1.3 关联查询太多了(join)

     1.4 服务器调优

2.索引

      mysql索引:索引是帮助mysql高效获取数据的数据结构

      可以的到索引的本质:数据结构

      你可以简单理解为  排好序的快速查找数据结构

mysql优化1——索引_第1张图片

索引一般来说本身也很大,不可能全部存在内存中,因此索引往往以文件的形式存储在磁盘上。

我们平时所说的索引,如果没有特别指明,都是指B树的索引。

2.1 优势:

提高数据检索的效率

降低数据排序的成本

2.2 劣势:

索引也要占空间的

提高查询效率,降低更新表的速度(增,删,改)

2.3 索引分类(一张表最多建立5个索引)

单值索引:一个索引只包含单个列,一个表可以有多个单列索引

唯一索引:索引列的值必须唯一,但允许有空值

复合索引:一个索引包含多个列

2.4 索引的基本语法

mysql优化1——索引_第2张图片
mysql优化1——索引_第3张图片

2.5 哪些情况下需要建立索引

1.主键自动建立唯一索引

2.频繁作为查询条件的字段应该创建索引(电信系统的手机号 )

3.查询中与其他表关联的字段,外键关系建立索引

4.频繁更新的字段不适合创建索引(更新数据的时候,索引也会更新)

5.where条件里用到的字段不创建索引

6.单键/组合索引的选择文件,who?(在高并发下倾向创建组合索引)

7.查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度(order by 排序字段最好和索引字段一致,就是键了name,age,email索引,    order by 的时候也要按照这个顺序最好)

8.查询中统计或者分组字段

2.6 那些情况下不需要建立索引

1.表记录太少

2.经常增删改的表

3.数据重复且平均的字段(性别sex)

2.7 explain

是什么?

使用explain关键字可以模拟优化SQL查询语句,从而知道mysql是如何处理你的SQL语句,分析你的查询语句的瓶颈或者表结构的性能瓶颈。相当于体检报告。

干什么?

表的读取顺序

数据读取操作的操作类型

哪些索引可以使用

那些索引实际被使用

表之间的引用

每张表有多少行被优化器查询

你可能感兴趣的:(mysql优化1——索引)