mysql-进阶

索引介绍

  1. 主键索引(PRIMARY KEY):非空唯一,推荐使用主键自增
  2. 唯一索引(UNIQUE): 唯一,允许空值,并可以有多个
  3. 普通索引(NORMAL):
    - 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引。
    - 复合索引:即一个索引包含多个列
    说明:如果某张表中 需要对3个字段进行where条件过滤,我们一般对这3个字段创建复合索引,而不是分别创建3个单值索引
  4. 全文索引(FULLTEXT): 主要是针对文本的检索,如:文章,全文索引只针对MyISAM引擎有效,并且只针对英文内容生效 。 了解就行
  5. 空间索引(SPATIAL):地理位置领域使用的一种索引,其他场景用的很少。了解就行
  6. 适合创建索引的字段
    • where中频繁作为查询条件的字段应该创建索引
    • 查询中与其它表关联的字段,外键关系建立索引
    • 分组,排序,统计 字段可以建立索引
  7. 不适合创建索引的字段
    • where条件中用不到的字段不适合建立索引
    • 频繁更新的字段不适合建立索引
    • 表中数据可以确定比较少的不需要建索引
    • 数据重复且发布比较均匀的的字段不适合建索引,如: 性别

sql优化

  1. 避免使用select *
  2. 用union all代替union
  3. 小表驱动大表
  4. 多用limit
  5. in中值不能太多
  6. 最左匹配原则
  7. 不在索引列上做任何操作(计算、函数、(自动or手动)类型转换)
  8. 用连接查询代替子查询
  9. 表连接尽量少(需要在表设计阶段,多考虑表的结构)
  10. mysql在使用不等于(!=或者<>)的时候无法使用索引
  11. is null, is not null 也无法使用索引
  12. like “%xxx” 也无法使用索引
  13. 字符串不加单引号索引失效
  14. 少用or,用它来连接时会索引失效
  15. 索引优化

sql性能分析

explain + sql语句
在这里插入图片描述

  1. id:执行编号
    值越大,越先执行。值相同,从上倒下,依次执行
  2. select_type:查询类型
    区别普通查询、联合查询、子查询等的复杂查询
  3. table:执行的表名
  4. type:数据操作类型
    访问类型排列(常用):system > const > eq_ref > ref > range > index > ALL
    一般来说,要保证查询至少达到 range 级别,最好能达到 ref。
  5. possible_keys:可能应用在这张表中的索引
  6. key:实际使用的索引,如果为NULL,则没有使用索引(要么没建,要么索引失效)
  7. key_len:消耗的字节数
    key_len 列显示 MySQL 决定使用的键长度。如果键是 NULL,则长度为 NULL。使用的索引的长度,在不损失精确性的情况下,长度越短越好
  8. ref:表之间的引用
    显示使用哪个列或常数与 key 一起从表中选择行
  9. rows:预估查询行数
    根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数(越小越好)
  10. Extra:额外信息
    该列显示 MySQL 在查询过程中的一些详细信息,MySQL 查询优化器执行查询的过程中对查询计划的重要补充信息。
    信息种类:
    • Using filesort (优化):说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成的排序操作称为"文件排序"
    • Using temporary :(优化):使了用临时表保存中间结果,MysQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by
    • Using index
    • Using where
    • Using join buffer
    • impossible where
    • select tables optimized away
    • distinct

锁机制

主从复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值