mysql中,字符串如何建立索引的(本文中截取一部分)

只对字符串的前几个字符进行索引。通过字符串的前几个字符我们已经能大概排序字符串了,剩下不能排序的可以通过遍历进行查找啊,这样只在B+树中存储字符串的前几个字符的编码,既节约空间,又减少了字符串的比较时间,还大概能解决排序的问题,何乐而不为,比方说我们在建表语句中只对name列的前10个字符进行索引可以这么写:

CREATE TABLE person_info(
name VARCHAR(100) NOT NULL,
birthday DATE NOT NULL,
phone_number CHAR(11) NOT NULL,
country varchar(100) NOT NULL,
KEY idx_name_age_birthday (name(10), birthday, phone_number)
);

  

name(10)就表示在建立的B+树索引中只保留记录的前10个字符的编码,这种只索引字符串值的前缀的策略是我们非常鼓励的,尤其是在字符串类型能存储的字符比较多的时候。

对于我工作遇到后10个字符需要创建索引。

下面这一列,后面10几个字符更有规律

可惜mysql不支持后缀索引。只支持前缀索引

前缀索引能很好地减少索引的大小及提高速度,但是mysql不能在order by 和group by查询中使用前缀索引,也不能把它们用伯覆盖索引。

有时后缀索引也挺有用,例如查找某个域名的所有电子邮件地址。mysql不支持反向索引,但是可以把反向字符串保存起来,并且索引它的前缀。可以用触发器维护这种索引。

最新文章

  1. 图解C#的值类型,引用类型,栈,堆,ref,out
  2. android 存储图片到data目录和读取data目录下的图片
  3. 关于JAVA日志
  4. x01.os.13: 文件系统
  5. poj1129 Channel Allocation
  6. 解决SVN不显示状态图标
  7. UICollectionView使用以及与UITableView的区别
  8. tomcat安全配置(二)
  9. MongoDb C/java driver
  10. 当你还在争夺移动支付的时候,我已经统一了IC卡市场
  11. UVA 116 Unidirectional TSP(dp + 数塔问题)
  12. 限制某个进程只能在某个CPU上运行
  13. 剑指offer——矩阵覆盖(斐波那契变形)
  14. Android使用SimpleAdapter
  15. 实施一个SAP项目大概分为下面几个过程
  16. 【转】如何判断ARP欺骗?该怎么防护?
  17. Eclipse 工程目录下的.classpath、.project文件和.settings文件作用
  18. 3-scala高级
  19. 处理html内容,获取纯文本
  20. 廖雪峰Java1-2程序基础-7布尔运算符

热门文章

  1. matlab中文本文件与图像转化
  2. mybatis column 和property
  3. win10下安装scala流程及问题
  4. pssac plot
  5. hdu3861 强连通分量缩点+二分图最最小路径覆盖
  6. mvc4使用百度ueditor编辑器
  7. L271 操纵太空中航天器的几种方法
  8. golang写的反弹shell(自作孽不可活,切记,切记!)
  9. 【Python】进程3
  10. js中call、apply和bind的区别