前缀索引使用

前缀索引使用前缀索引使用1.前缀索引索引通常会使用字段的整体用作关键字,但是有些时候,即使使用字段的前段部分数据也是可以去识别某些记录的,而这种方式就是前缀索引,可以更快的去搜索某些数据建立前缀索引的语法:ALTERTABLE表名ADDKEY(字段名(N));N就是要用字段的前几位建立索引。既然我们使用了前缀索引,那么我们肯定就要确认N为多少的时候的辨识度是极限接近最高辨识度的,否则前缀…

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

前缀索引使用

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

1.前缀索引

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

ALTER TABLE 表名 ADD KEY(字段名(N));

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

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

$arr = select count(字段名) from 表名;

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

$ayy = select $arr/count(distinct count(字段名)) form 表名;

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

$aoo = select $arr/count(distinct substring(字段名,1,4)) from 表名

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

ALTER TABLE 表名 ADD KEY(字段名(N));

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JS几种数组遍历方式总结

    JS几种数组遍历方式总结JS数组遍历的几种方式JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比第一种:普通for循环代码如下:for(j=0;j<arr.length;j++){}简要说明:最简单的一种,也是使用频率最高的一种,虽然性能不弱,但仍有优化空间第二种:优化版for循环代码如下…

    2022年7月12日
    16
  • 高级C/C++编译技术之读书笔记(二)之库的概念

    本节思维导图1.位置无关代码(PIC)首先,需要理解加载域与运行域的概念。加载域是代码存放的地址,运行域是代码运行时的地址。为什么会产生这2个概念?这2个概念的实质意义又是什么呢?在一些场合,

    2021年12月28日
    36
  • PyCharm安装配置谷歌浏览器驱动[通俗易懂]

    PyCharm安装配置谷歌浏览器驱动[通俗易懂]PyCharm配置安装Chorme驱动下载驱动查看Chorme的版本这是我的谷歌浏览器版本去网站下载对应的驱动软件下载后进入下载的目录,解压然后把这个文件放入Python的Scripts文件夹(首先你的Python环境变量已经配置过)驱动下载地址:http://chromedriver.storage.proxy.ustclug.org/index.html安装驱动进入设置,按照步骤点击安装selenium包然后会出现安装进程,添加完成之后开始测试驱动测试驱动创建一个Pyth

    2022年5月4日
    599
  • ddr2 odt_ddr2电压

    ddr2 odt_ddr2电压经常有人会说支持DDR2的主板存在偷工减料的现象。事实上这是由于DDR2内存中使用了一项新的ODT技术,它可以在提高内存信号稳定性的基础上节省不少电器元件。主板终结是一种最为常见的终结主板内干扰信号的方法。在每一条信号传输路径的末端,都会安置一个终结电阻,它具备一定的阻值可以吸收反射回来的电子。但是目前DDR2内存的工作频率太高了,这种主板终结的方法并不能有效的阻止干扰信号。若硬要采用主板终结

    2022年9月8日
    0
  • 关于window10安装jdk,配置环境变量,javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题。[通俗易懂]

    关于window10安装jdk,配置环境变量,javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题。[通俗易懂]今日拿到一台新的window10笔记本电脑,非常熟练的安装了JDK(因为在学校经常给同学安装JDK–)但是发现javajava-version命令都可以使用,唯独javac命令出现不是内部或外部命令,也不是可运行的程序或批处理文件。出现这个问题基本就是命令找不到路径,基本可以锁定是环境变量Path出现问题。我们查看Path环境变量发现如下情况:注意红色框框,看到配置的环境变量出现…

    2022年5月28日
    55
  • oracle amm和asmm,AMM与ASMM

    oracle amm和asmm,AMM与ASMM一、AMM相关知识:1.从oracle11.1开始oracle提供了通过MEMORY_TARGET参数实现自动SGA和PGA自动管理的功能,从此版本开始不再需要明确设置SGA_TARGET及PGA_AGGREGATE_TARGET,这个被支持在linux、windows、solaris、hpux、aix。2.在使用MEMORY_TARGET参数的linux机器上,在oracle启动时遇到ORA-…

    2022年6月7日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号