我积极解决 发表于 2018-10-1 13:53:01

MySQL的索引 之组合索引使用

  MySQL的索引 之组合索引使用
  
  mysql中组合索引(联合索引)的使用
  对于查询select*fromtable_name whereuid=xx uidnd gpdm=xx 的形式
  可以使用(uid,gpdm)这样子的组合索引,
  对于查询 select * fromtable_name where uid=xx 的形式
  也可以使用(uid,gpdm)这样子的组合索引
  但是对于查询select *from table_name where gpdm=xx 的形式
  不可以使用(uid,gpdm) 这样子的组合索引,除了sql语句中有统计操作之外。
  例如 select count(*)fromtable_name where gpdm=xxx and …gpdm=xxx;


  possible_keys为NULL,但是key却为userid_2联合索引。using index 表示使用覆盖索引。
  覆盖索引的定义:
  官方解释

  即:一个包括所有要检索列的索引,不用再通过索引值去检索全部表数据,通过索引就可以直接取到数据。
  Innodb引擎中的辅助索引(即第二索引) 包含了主键列信息。即

  例如:


  userid_2为组合索引(userid,buy_duidte)
  userid为索引userid
  可以看到key键中直接选用了userid_2,并且type=ref.extruid中using index ,using where
  如果强制使用userid索引


  可以看到extruid中使用了using filesort, key为userid

页: [1]
查看完整版本: MySQL的索引 之组合索引使用