怎么给数据库某个字段建立一个前缀索引

说明: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,速度显著提升;

在这里插入图片描述

看下执行计划,可以看到走了索引;

在这里插入图片描述

到这,给数据库某字段建立前缀索引就完成了,重点是获取前缀索引的长度。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(附源码)SSM+成都大学体育场馆预约系统 计算机毕设37087

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

Vatee万腾的数字探险之旅:vatee科技创新的新纪元

在数字时代的潮流中,Vatee万腾以其独特的数字探险之旅引领着科技创新的新纪元。这不仅是一次技术的进步,更是一场数字领域的探险,让我们一同探索Vatee在科技创新中的前沿地带。 Vatee万腾的数字探险起源于对未知的渴望和对创新的不懈追求。在…

【PUSDN】WebStorm中报错Switch language version to React JSX

简述 WebStorm中报错Switch language version to React JSX 可能本页面的写法是其他语法。所以可以不用管。 测试项目:ant design vue pro 前情提示 系统: 一说 同步更新最新版、完整版请移步PUSDN Powered By PUSDN - 平行宇宙软件开发者网www.pusdn…

《opencv实用探索·三》opencv Mat与数组互转

1、利用Mat来存储数据&#xff0c;避免使用数组等操作 //创建一个两行一列的矩阵cv::Mat mean (cv::Mat_<float>(2, 1) << 0.77, 0.33);std::cout() << mean << std::endl;float a mean.at<float>(0, 0); //0.77float b mean.at<float&…

使用vscode中编写c语言——无法打开 源 文件 “stdlib.h“C/C++(1696)问题

出现这个问题原因如下&#xff1a; 1、没有下载编辑器或者是没有配置好该编辑器的环境变量。 可以通过如下方法检查是否安装并配置好编辑器&#xff1a;打开终端&#xff1a;按winR cmd&#xff0c;然后输入gcc-v&#xff0c;查看是否有mingw64编辑器&#xff0c;如下图是已经…

TUP通信——与多个客户端同时通信

一&#xff0c;概括&#xff1a;可以通过多线程思想每加一个客户端由线程池中的主线程交给一个子线程管理 二&#xff0c;案例 &#xff08;1&#xff09;&#xff0c;线程池 &#xff08;2&#xff09;&#xff0c;服务端 &#xff08;3&#xff09;&#xff0c;客户端

【Qt】QStackedWidget、QRadioButton、QPushButton及布局实现程序首页自动展示功能

效果 在程序启动后&#xff0c;有时不会进入到工作页面&#xff0c;会进入到产品展示页面。 动画如下&#xff1a; 首页展示 页面操作 当不点击时&#xff0c;一秒自动刷新一次&#xff1b;当点击时&#xff0c;会自动跳转到对应页面&#xff1b;点击上一页、下一页、及跳转页…

03、K-means聚类实现步骤与基于K-means聚类的图像压缩

03、K-means聚类实现步骤与基于K-means聚类的图像压缩&#xff08;1&#xff09; K-means聚类实现步骤 开始学习机器学习啦&#xff0c;已经把吴恩达的课全部刷完了&#xff0c;现在开始熟悉一下复现代码。对这个手写数字实部比较感兴趣&#xff0c;作为入门的素材非常合适。…

理解Android无埋点技术

首先什么是无埋点呢&#xff0c;其实所谓无埋点就是开发者无需再对追踪点进行埋码&#xff0c;而是脱离代码&#xff0c;只需面对应用界面圈圈点点即可追加随时生效的事件数据点。 无埋点的好处 其实无埋点并不是完全不用写代码&#xff0c;而是尽可能的少写代码。开发者将SDK集…

零基础学编程轻松学编程,分享一款中文编程工具,编程构件简介

零基础学编程轻松学编程&#xff0c;分享一款中文编程工具&#xff0c;编程构件简介 中文编程开发语言工具编辑区界面截图如上图。 给大家分享一款中文编程工具 零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#…

数据库应用:Ubuntu 20.04 安装MongoDB

目录 一、理论 1.MongoDB 二、实验 1.Ubuntu 20.04 安装MongoDB 三、问题 1.Ubuntu Linux的apt 包管理器更新安装软件报错 2.Ubuntu20.04安装vim报错 3.Ubuntu20.04如何更换阿里源 4.Ubuntu22.04如何更换阿里源 一、理论 1.MongoDB &#xff08;1&#xff09;概念 …

6、Qt使用Log4Qt日志

一、知识点 1、Log4Qt有三部分 logger&#xff1a;负责捕获日志信息 layout&#xff1a;负责使用不同的样式输出日志 appender&#xff1a;负责输出信息到不同的目的地&#xff0c;比如数据库、文件、控制台等等 2、 日志级别如下&#xff0c;从上往下依次递增 ALL&#xff1a;…

css之svg 制作圆及旋转

1.代码 <template><div class"loading-box"><div class"circle-container"><svg width"75" height"75" class"move-left-to-right"><circle cx"37.5" cy"37.5" r"26&…

高端影像仪:打破微小产品测量局限

在现代工业生产中&#xff0c;影像仪以CCD数位影像为基石&#xff0c;将计算机屏幕测量技术与空间几何运算的能力融为一体&#xff0c;可以用于测量微小产品的各种尺寸和形状&#xff0c;为生产过程中的质量控制提供重要的参考依据。 影像仪产品内置高精度光学电动双倍镜头&am…

什么是动态住宅IP?它有什么用途?

随着网络的迅速发展&#xff0c;许多人对代理IP已经有了比较深刻的认识&#xff0c;并且广泛地运用到了各自的业务中&#xff0c;尤其在跨境的相关业务中表现尤其卓越。对于代理IP的类别&#xff0c;也需要根据自己的业务类型具体选择最合适的&#xff0c;那么今天IPFoxy就给大…

网页设计--第5次课后作业

1、快速学习JavaScript的基本知识第1-10章 JavaScript入门 - 绿叶学习网 2、使用所学的知识完成以下练习。需求如下3个&#xff1a; 1&#xff09;点亮灯泡 2&#xff09;将所有的div标签的标签体内容后面加上&#xff1a; very good 3&#xff09;使所有的复选框呈现被选…

【javaWeb】HTTP协议

HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的应用层协议 HTTP 是一个文本格式的协议. 可以通过 Chrome 开发者工具或者 Fiddler 抓包, 分析 HTTP 请求/响应的细节. 上图是通过Fiddler对访问百度搜索页时抓取的一个http协议的包。 观察抓包结果,可以看到,当前 http…

myAGV 2023 Pi 全新升级!

Introduction 在高速发展的自动化和机器人技术领域&#xff0c;我们的公司一直致力于提供高效、灵活且可靠的轻量级机械臂解决方案。然而&#xff0c;我们也深知&#xff0c;传统的机械臂需要固定在一个地方&#xff0c;这在一定程度上限制了其在空间上的应用范围。为了突破这一…

【论文阅读】ActiveNeRF:通过不确定性估计候选新视图

【论文阅读】ActiveNeRF: Learning where to See with Uncertainty Estimation Abstract1 Introduction3 Background4 NeRF with Uncertainty Estimation5 ActiveNeRF5.1 Prior and Posterior Distribution5.2 Acquisition Function5.3 Optimization and Inference 6 Experimen…

ECharts配置项手册了解及使用

1&#xff1a;点击文档然后选择配置项手册或者&#xff1a;Documentation - Apache ECharts 2&#xff1a;