美文网首页
第十七节、怎么给字符串字段加索引?

第十七节、怎么给字符串字段加索引?

作者: 小母牛不生产奶 | 来源:发表于2020-06-17 15:40 被阅读0次

mysql是支持前缀索引,也就是说,可以定义字符串的一部分作为索引。默认地,如果创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。

mysql> alter table SUser add index index1(email);

mysql> alter table SUser add index index2(email(6));

第一个语句创建的index1索引里面,包含了每个记录的整个字符串;

而第二个语句创建的index2索引里面,对于每个记录都是只取前6个字节。

使用前缀索引,定义好长度,可以做到即节省空间,又不用额外增加太多的查询成本



什么叫做覆盖索引?

解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。

解释二: 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。

解释三:是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。

  不是所有类型的索引都可以成为覆盖索引。覆盖索引必须要存储索引的列,而哈希索引、空间索引和全文索引等都不存储索引列的值,所以MySQL只能使用B-Tree索引做覆盖索引。


使用索引的方式?

1、直接创建完整索引,这样可能比较占用空间;

2、创建前缀索引,节省空间,但会增加查询扫描次数,并且不能使用覆盖索引;

3、倒序存储,再船舰前缀索引,用于让偶哦字符串本身前缀的区分度不够的问题;

4、创建hash字段索引,查询性能稳定,有额外的存储和计算消耗,跟第三种方式一样,都不支持范围扫描

相关文章

网友评论

      本文标题:第十七节、怎么给字符串字段加索引?

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