主页 > InnoDB存储引擎 > 前缀索引带来的性能影响

前缀索引带来的性能影响

小牛教程 InnoDB存储引擎 2021年06月16日
  CREATE TABLE `t` (
  
  `a` varchar(30) NOT NULL,
  
  `id` int(11) NOT NULL AUTO_INCREMENT,
  
  PRIMARY KEY (`id`),
  
  KEY `i_a` (`a`(2))
  
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  
  insert into t values(1,'黄山二日游住山上');
  
  insert into t values(2,'黄山二日游住山下');
  
  insert into t values(3,'黄山三日游');
  
  insert into t values(4,'泰山四日游');
  
  作用:
  
  ​    。索引长度影响b+tree高度,索引长度越短越好
  
  ​    。节省磁盘空和内存空间
  
  ​    。建前缀索引时,如果合理的定义前缀索引的长度,会对查询性能带来好的影响
  
  ​        前缀索引长度创建不合理会带来哪些不好的影响?
  
  ​            不合理的长度,会带来更多回表查询
  
  ​    总结:建前缀索引时,最重要的就是指定合理的长度
  
  ​    合理长度判断:
  
  ​        select count(distinct a) from t;去除重复的值,总共有多少条记录
  
  ​        select count(distinct left(a, 3)) from t;
  
  ​        80%-90%就是合理的
  
  ​    缺点:
  
  ​        。无法使用覆盖索引
  
  ​        。无法进行order by和group by,会产生额外排序和产生临时表
广告位
标签: 前缀索引   mysql索引