前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前缀索引使用

前缀索引使用

作者头像
全栈程序员站长
发布2022-08-31 16:58:30
6680
发布2022-08-31 16:58:30
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

前缀索引使用

前言: 一定要一个字一个字看,必会

1.前缀索引

索引通常会使用字段的整体用作关键字,但是有些时候,即使使用字段的前段部分数据也是可以去识别某些记录的,而这种方式就是前缀索引,可以更快的去搜索某些数据 建立前缀索引的语法:

代码语言:javascript
复制
ALTER TABLE 表名 ADD KEY(字段名(N));

N就是要用字段的前几位建立索引。 既然我们使用了前缀索引,那么我们肯定就要确认N为多少的时候的辨识度是极限接近最高辨识度的,否则前缀索引的用处将不会被发挥出来。

那么怎么来确认这个N是多少的呢? 先查询出来字段共有多少条数据 首先我们先查询一下字段共有多少条数据:

代码语言:javascript
复制
$arr = select count(字段名) from 表名;

这时候我们会得到一个数据,这个数据是这个字段所有数据的长度,然后我们将这个数据记录下来。 记录下来之后将这个字段内的所有数据进行去重,去重函数为distinct,用我们刚才所取得的所有的数据数量除以我们去重过后得到的数据的数量,这个时候我们得到的就是我们这个字段的最大辨识度(如果不懂继续往下看)

代码语言:javascript
复制
$ayy = select $arr/count(distinct count(字段名)) form 表名;

这时候我们得到的$ayy就是我们这个字段所能得到的最大辨识度,而我们这个N就是要得到一个数,使我们这个数建立的前缀索引能达到无限接近于最大辨识度(ayy),这个 时候我们就可以进行调试。 假如这个字段的长度为10 我们就可以从4开始进行调试,直到我们得到的辨识度无限接近于我们得到的最大辨识度(ayy)。 调试方式:

代码语言:javascript
复制
$aoo = select $arr/count(distinct substring(字段名,1,4)) from 表名

这时候我们得到的¥aoo就是如果我们的N为4时辨识度为多少,如果并不是最接近最大辨识度(ayy)的话,我们就接着调试,将4改成5,6,7······直至我们的辨识度(aoo)达到最接近最大辨识度(ayy)。 当调试至最接近的时候N就为我们建立前缀索引的前几位,这时候我们就可以发挥出前缀索引的最大功能

代码语言:javascript
复制
ALTER TABLE 表名 ADD KEY(字段名(N));

TIP:前缀索引不能用于索引覆盖,因为索引覆盖需要全部的数据,而前缀索引只会缓存数据的前几位

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142476.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前缀索引使用
    • 1.前缀索引
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档