重庆网站建设必选承越,卧室装修设计,樟树网站开发,工业设备网站源码说明#xff1a;SQL调优中重要的一个环节是建立索引#xff0c;其中有一条是字段值过长字段应该建立前缀索引#xff0c;即根据字段值的前几位建立索引#xff0c;像数据库中的密码字段、UUID字段。
因为其随机性#xff0c;其实根据前几位就可以锁定某一条记录了。前缀索…说明SQL调优中重要的一个环节是建立索引其中有一条是字段值过长字段应该建立前缀索引即根据字段值的前几位建立索引像数据库中的密码字段、UUID字段。
因为其随机性其实根据前几位就可以锁定某一条记录了。前缀索引可以用尽可能少的代价得到目的毕竟索引也是需要内存和维护成本的。本文介绍如何建立一个前缀索引。
索引的长度怎么选
建立前缀索引前我们需要知道选该字段值的前几位建立索引要求是根据前缀的这部分就可以锁定某一条数据。比如我下面的这张表有1000万条记录我想对password字段建立前缀索引 可以敲下面这个SQL找出前缀索引的长度
# password字段值前10位去重后的数量 / 所有记录数
select count(distinct left(password,10))/count(*) from user;这里是计算出password字段前几位字段值并且去重后的数量如果等于1说明password字段的前几位互不相同说明根据这个长度来建立前缀索引就够了。
前9位不等于1还不行 前10位等于1说明10位足够区分 这个过程需要一定时间但是总会找到的。
建立前缀索引
建立前缀索引之前先执行一条查询SQL看需要多久。
select * from user where password c81e728d9d4c2f636f067f89cc14862c;22秒足够慢 敲下面的SQL给password字段值的前10位建立索引password_prefix_index是索引名password(10)表示前10位
# 给user表中的password字段前10位建立索引
create index password_prefix_index on user(password(10));执行完成 查看效果
再执行前面的那条查询SQL看下效果执行时间128ms速度显著提升 看下执行计划可以看到走了索引 到这给数据库某字段建立前缀索引就完成了重点是获取前缀索引的长度。