1.SQL慢原因
1.1 查询语句写的太烂了
1.2 索引失效(单值索引,复合索引)
1.3 关联查询太多了(join)
1.4 服务器调优
2.索引
mysql索引:索引是帮助mysql高效获取数据的数据结构
可以的到索引的本质:数据结构
你可以简单理解为 排好序的快速查找数据结构
索引一般来说本身也很大,不可能全部存在内存中,因此索引往往以文件的形式存储在磁盘上。
我们平时所说的索引,如果没有特别指明,都是指B树的索引。
2.1 优势:
提高数据检索的效率
降低数据排序的成本
2.2 劣势:
索引也要占空间的
提高查询效率,降低更新表的速度(增,删,改)
2.3 索引分类(一张表最多建立5个索引)
单值索引:一个索引只包含单个列,一个表可以有多个单列索引
唯一索引:索引列的值必须唯一,但允许有空值
复合索引:一个索引包含多个列
2.4 索引的基本语法
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语句,分析你的查询语句的瓶颈或者表结构的性能瓶颈。相当于体检报告。
干什么?
表的读取顺序
数据读取操作的操作类型
哪些索引可以使用
那些索引实际被使用
表之间的引用
每张表有多少行被优化器查询
网友评论