一、新名词
前缀索引
定义字符串的一部分作为索引。
二、小结
字符串字段创建索引的场景可以使用的方式有:
- 直接创建完整索引,这样可能比较占用空间;
- 创建前缀索引,节省空间,但会增加查询扫描次数,并且不能使用覆盖索引;
- 倒序存储,再创建前缀索引,用于绕过字符串本身前缀的区分度不够的问题;
- 创建hash字段索引,查询性能稳定,有额外的存储和计算消耗,跟第三种方式一样,都不支持范围扫描。
三、示例
1. 前缀索引
代码如下(示例):
mysql> alter table SUser add index index2(email(6));
2. 倒序存储
代码如下(示例):
mysql> select field_list from t where id_card = reverse('input_id_card_string');
3. 使用hash字段
代码如下(示例):
mysql> alter table t add id_card_crc int unsigned, add index(id_card_crc);
mysql> select field_list from t where id_card_crc=crc32('input_id_card_string') and id_card='input_id_card_string';