美文网首页
MySql索引

MySql索引

作者: 凌雲木 | 来源:发表于2018-05-05 10:14 被阅读25次

索引是一个单独的,存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引用于快速找出在某个或多个列中有一定特定值的行。
MySql中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关。MyISAM和InnoDB引擎只支持BTREE索引。MEMORY/HEAP存储引擎可以支持HASH和BTREE索引。

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
未使用索引之前,一条sql查询过程:

mysql> explain select * from user  where name='小王' \G;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: user
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 7
     filtered: 14.29
        Extra: Using where
1 row in set, 1 warning (0.00 sec)

explain各行解释:

  • id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.

  • select_type: SELECT 查询的类型.,这里为SIMPLE,表示为简单的查询,不使用UNION或者子查询

  • table: 查询的是哪个表,按读取的先后顺序排列

  • partitions: 匹配的分区

  • type: 指定了本数据表与其他数据表之间的关联关系。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL

  • possible_keys: 此次查询中可能选用的索引

  • key: 此次查询中确切使用到的索引.

  • key_len::使用的索引的长度。在不损失精确性的情况下,长度越短越好

  • ref: :显示索引的哪一列被使用了,如果可能的话,是一个常数

  • rows: 显示此查询一共扫描了多少行. 这个是一个估计值.

  • filtered: 表示此查询条件所过滤的数据的百分比

  • extra: 额外的信息

当在表name列加一个索引时


image.png
           id: 1
  select_type: SIMPLE
        table: user
   partitions: NULL
         type: ref
possible_keys: sy_name
          key: sy_name
      key_len: 767
          ref: const
         rows: 1
     filtered: 100.00
        Extra: NULL
1 row in set, 1 warning (0.06 sec)

ERROR:

rows: 显示此查询一共扫描了多少行. 这次就扫描的一行,不加索引时,全部扫描一遍。

相关文章

  • MySQL索引及查询优化书目录

    MySQL索引的原理之索引目的 MySQL索引的原理之索引原理 MySQL索引的原理之索引的类型 MySQL索引的...

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • MySQL索引的使用

    MySQL索引 MySQL索引可以快速提高MySQL的检索速度。索引分单列索引和组合索引单列索引:即一个索引只包含...

  • Mysql索引与锁

    本文以Mysql5.7为例测试。 1:mysql索引方法 Mysql的索引方法分为btree索引和hash索引。 ...

  • 索引(二)

    mysql索引的新手入门详解mysql索引之三:索引使用注意规则 索引(Index)是帮助 MySQL 高效获取数...

  • MySQL 索引分类

    MySQL索引的分类(根据数据结构) 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL...

  • MySQL--索引

    MySQL索引 查看索引 创建索引 创建唯一索引 创建主键索引 删除索引 删除主键 MySQL视图 创建视图 删除...

  • mysql索引

    索引 mysql索引的建立对于mysql的高效运行是很重要的,索引可以大大提高mysql的检索速度。索引分单列索引...

  • 5.2MySQL创建高性能索引考察点

    MySQL索引的基础和类型延伸:MySQL索引的创建原则延伸:MySQL索引的注意事项 索引的基础索引类似于书籍的...

  • MySql 数据查询优化

    1. MySQL索引类型: mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。...

网友评论

      本文标题:MySql索引

      本文链接:https://www.haomeiwen.com/subject/srnolftx.html