MySql索引

2018-05-05  本文已影响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各行解释:

当在表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: 显示此查询一共扫描了多少行. 这次就扫描的一行,不加索引时,全部扫描一遍。

上一篇 下一篇

猜你喜欢

热点阅读