MySQL中怎么利用字符串做索引
今天就跟大家聊聊有关MySQL中怎么利用字符串做索引,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
在PC互联网时代,我们的很多账户都需要绑定电子邮箱,我们偶尔需要使用电子邮箱,也就是字符串来进行数据查询,为了保证查询效率,我们通常要对字符串字段建立索引。
我们都知道,在InnoDB中,通常使用的是B+树索引,如果索引的类型是字符串,那么我们可能会面临这样一个问题,索引的长度会变得特别长,索引的长度过长会让索引的索引占用更多的存储空间,同时也会增加索引的维护成本。通常我们使用字符串索引,只会使用前面若干个字符,假如用户的邮箱的开头是26个字母,并且用户名随机均匀分布的,那么我们即使使用第一个字符做索引,也能减少25/26的扫描量,假如使用前2个字符,就可以减少675/676次扫描。所以,即便我们只用前面的若干个字符,也能大大地减少数据库的扫描,提升查询速度。
但是在现实生活中,用户名往往不是随机分布的,像a开头的用户往往占比较大。有些字符串的字段,往往开头是相似的,例如居民的身份证号,前面几位数通常是省份跟城镇,教育局的学生信息,通常id是入学时间加月份,索引的选择最好要满足唯一性,我们最好能使用更有特色的字段进行索引的建立。
例如身份证的问题,我们知道,身份证的前6位通常是地区信息,全国的省市区加起来也就是几千个,而身份证的后六位是生日的日信息跟4个随机数字。那么,仅有30万分之一的概率后六位的数字是相同的。也就是说,如果把身份证号码逆序存储后,取前6位作为索引,可以减少近百分的数据扫描量,从而大大提升扫描的效率。
另外一种方法,就是建立哈希索引而不是B+树索引,哈希索引的好处是在于查询特定字符串的时候,几乎都只要查询一行数据。但是哈希索引的弊端是不支持范围查询,也不支持字符串匹配,假如的业务没有这样的场景,那可以使用哈希索引。
看完上述内容,你们对MySQL中怎么利用字符串做索引有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341