MySQL----索引

索引

  • 关键字 : index

  • 展示一个表上有那些索引 Show index from 表名;

    show index from t_student;

索引的类型
  • MySQL提供多种索引类型供选择: 当有一个非主键属性经常当做条件查询时,可以在这个属性上放一个索引。
  1. 普通索引

    • 这是最基本的索引类型,而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建:

      • create index 索引名 on 表名(字段名);

        ① 给学生表的姓名设置一个索引

        create index aa on t_student(sname);
        
  2. 唯一性索引

    • 这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次(相当于主键),即必须唯一。唯一性索引可以用以下几种方式创建:

      • create unique index 索引名 on 表名(列名);

        ① 给学生表里面的英文名创建唯一索引

        create unique bb on t_student(sename);

        唯一索引比普通索引在查询效率上高一些;使用索引添加数据,比使用索引查询要慢一些

  3. 主键索引

    • 主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。
  4. 全文索引

    • 只有MyISAM存储引擎支持全文索引。但是该引擎与外键冲突,不能同时使用。
  5. 多列索引

    • Create table tab(

      ​ id int,

      ​ name varchar(20),

      ​ sex char(4),

      ​ index [indexName](name,sex)

      );

    • 使用多列索引时一定要特别注意,只有使用了索引中的第一个字段时才会触发索引。如果没有使用索引中的第一个字段,那么这个多列索引就不会起作用。

删除索引
  • Drop index 索引名 on 表名;
explain
  • explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
  1. id
    • SELECT识别符。这是SELECT查询序列号。这个不重要,查询序号即为sql语句执行的顺序。
  2. select_type
    • select类型,它有以下几种值
      • simple 它表示简单的select,没有union和子查询
      • primary 最外面的select,在有子查询的语句中,最外面的select查询就是primary。
  3. table
    • 输出的行所用的表,这个参数显而易见,容易理解
  4. type
    • 连接类型。有多个参数,先从最佳类型到最差类型介绍 (重要)
    • const
      • 表最多有一个匹配行,const用于比较primary key 或者unique索引。因为只匹配一行数据,所以很快记住一定是用到primary key 或者unique,并且只检索出两条数据的情况下才会是const,看下面这条语句
    • ALL
    • 对于每个来自于先前的表的行组合,进行完整的表扫描。如果表是第一个没标记const的表,这通常不好,并且通常在它情况下差。通常可以增加更多的索引而不要使用ALL,使得行能基于前面的表中的常数值或列值被检索出。
  5. possible_keys
    • 提示使用哪个索引会在该表中找到行,不太重要
  6. keys
    • MYSQL使用的索引,简单且重要
  7. key_Len
    • MYSQL使用的索引长度
  8. ref
    • ref列显示使用哪个列或常数与key一起从表中选择行。
  9. rows
  • 显示MYSQL执行查询的行数,简单且重要,数值越大越不好,说明没有用好索引
  1. Extra
  • 该列包含MySQL解决查询的详细信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值