怎么给数据库某个字段建立一个前缀索引
说明: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,速度显著提升;

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

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

相关文章:
怎么给数据库某个字段建立一个前缀索引
说明:SQL调优中重要的一个环节是建立索引,其中有一条是字段值过长字段应该建立前缀索引,即根据字段值的前几位建立索引,像数据库中的密码字段、UUID字段。 因为其随机性,其实根据前几位就可以锁定某一条记录了。前缀索…...
C# 图片下载工具类
写在前面 从浏览器的Html文本中获取图片链接并保存到本地,同时对图片的分辨率和品质进行处理,以满足某些平台的规格需求;可以放到多线程中调用以提高下载效率。 代码实现 public class ImageDownloader{private int minImageSize 1024 * 1…...
嵌入式硬件电路·电平
目录 1. 电平的概念 1.1 高电平 1.2 低电平 2. 电平的使用场景 2.1 高电平使能 2.2 低电平使能 2.3 失能 1. 电平的概念 电平是指电信号电压的大小或高低状态。在数字电子学中,电平有两种状态,高电平和低电平,用来表示二进制中…...
Python文件路径常用操作
1 文件路径 在进行数据处理时,经常要用代码去读文件里的数据,那么首先就得知道这个文件的文件路径。文件路径简单地说就是文件的存放位置。文件路径分为两块:文件夹路径和文件名,文件名又分为文件基本名和扩展名。 举例说明&…...
Redis-Redis 高并发分布式锁
集群分布式场景高并发 1.negix配置代理和路由 高并发场景超卖问题 1.使用原生redis控制超卖时(若是商品,则可以将商品id作为锁对象),会遇到的问题 问题一:若直接使用:将获取锁的对象和设置的超时的时间分开,则不能控…...
【推荐系统】MMOE笔记 20231126
paper阅读 任务差异带来的固有冲突实际上会损害至少某些任务的预测,特别是当模型参数在所有任务之间广泛共享时。(在说ESMM) 共享底层参数可以减少过拟合风险,但是会遇到任务差异引起的优化冲突,因为所有任务都需要在…...
4. 标准 IO 库
4. 标准 IO 库 1. 标准 IO 简介2. FILE 指针3. 标准输入、标准输出和标准错误4. fopen() 和 flose()5. fread() 和 fwrite()6. fseek 定位7. 检查或复位状态7.1 feof()7.2 ferrof()7.3 clearerr() 8. 格式化 IO8.1 格式化输出8. 2 格式化输入 9. IO 缓冲9.1 文件 IO 的内核缓冲…...
SAP Smartform小结
SAP系统做打印单据用的, 感觉很不好用, 特别是要嵌入韩文时必须使用嵌入的word编辑器,运行速度简直不可忍受. 见过一些Adobe interactive form的示例, 看着相当不错, 不过据说需要花money额外买licence, 哪有smartform这种免费东西来得实惠. 一般打印需求,会要求有标题抬头,打…...
KVM虚拟机的NAT网络模式原理及过程展示
NAT的方式及原理 NAT方式是KVM安装后的默认方式。 它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。 default是宿主机安装虚拟机支持模块的时候自动安装的。 其中 virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接…...
亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(一)
随着大语言模型效果明显提升,其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型(LLM)知识召回(Knowledge Retrieval)的方式,在私域知识问答方面可以很好的弥补通…...
C# MemoryCache的使用和封装
封装个缓存类,方便下次使用。 using Microsoft.Extensions.Caching.Memory; using System; using System.Collections.Generic;namespace Order.Core.API.Cache {public class GlobalCache C#有偿Q群:927860652{private static readonly MemoryCache …...
【nlp】4.2 nlp中标准数据集(GLUE数据集合中的dev.tsv 、test.tsv 、train.tsv)
nlp中标准数据集 1 GLUE数据集合介绍1.1 数据集合介绍1.2 数据集合路径2 GLUE子数据集的样式及其任务类型2.1 CoLA数据集文件样式2.2 SST-2数据集文件样式2.3 MRPC数据集文件样式2.4 STS-B数据集文件样式2.5 QQP数据集文件样式2.6 (MNLI/SNLI)数据集文件样式2.7 (QNLI/RTE/WNLI…...
Java LinkedList
LinkedList 一个双向链表。 本身是基于链表进行封装的列表, 所以具备了链表的特性: 变更简单, 容量是无限的, 不必像数组提前声明容量等。 同时 LinkedList 支持存储包括 null 在内的所有数据类型。 1 链表 了解 LinkedList 之前, 我们需要先了解一下双向链的特点 单链表, 双…...
【单片机学习笔记】STC8H1K08参考手册学习笔记
STC8H1K08参考手册学习笔记 STC8H系列芯片STC8H1K08开发环境串口烧录 STC8H系列芯片 STC8H 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗为目标的 8051 单片机,在相同的工作频率下,STC8H 系列单片机比传统的 8051约快12 倍速度…...
RevCol:可逆的柱状神经网络
文章目录 摘要1、简介2、方法2.1、Multi-LeVEl ReVERsible Unit2.2、可逆列架构2.2.1、MACRo设计2.2.2、MicRo 设计2.3、中间监督3、实验部分3.1、图像分类3.2、目标检测3.3、语义分割3.4、与SOTA基础模型的系统级比较3.5、更多分析实验3.5.1、可逆列架构的性能提升3.5.2、可逆…...
HCIA-RS基础-RIP路由协议
前言: RIP路由协议是一种常用的距离矢量路由协议,广泛应用于小规模网络中。本文将详细介绍RIP路由协议的两个版本:RIPv1和RIPv2,并介绍RIP的常用配置命令。通过学习本文,您将能够掌握RIP协议的基本原理、RIPv1和RIPv2的…...
虚拟化逻辑架构: LBR 网桥基础管理
目录 一、理论 1.Linux Bridge 二、实验 1.LBR 网桥管理 三、问题 1.Linux虚拟交换机如何增删 一、理论 1.Linux Bridge Linux Bridge(网桥)是用纯软件实现的虚拟交换机,有着和物理交换机相同的功能,例如二层交换&#…...
【Spring之AOP底层源码解析,持续更新中~~~】
文章目录 一、动态代理1.1、ProxyFactory1.2、Advice的分类1.3、Advisor的理解 二、创建代理对象的方式2.1、ProxyFactoryBean2.2、BeanNameAutoProxyCreator2.3、DefaultAdvisorAutoProxyCreator 三、Spring AOP的理解3.1、AOP中的概念3.2、Advice在Spring AOP中对应API3.3、T…...
C语言:有一篇文章,共三行文字,每行有80个字符。要求分别统计出单词个数、空格数。
分析: #include<stdio.h>:这是一个预处理指令,将stdio.h头文件包含到程序中,以便使用输入输出函数。 int main():这是程序的主函数,是程序执行的入口点。 char a[3][80];:定义了一个二维…...
【数据结构与算法篇】一文详解数据结构之二叉树
树的介绍及二叉树的C实现 树的概念相关术语树的表示 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一 个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树, 也就是说它是根朝上,而叶朝…...
如何批量创建SQL存储过程_使用脚本自动化部署流程
最稳妥的批量建存储过程方法是:SQL Server用sp_executesql逐个执行CREATE OR ALTER PROCEDURE;PostgreSQL用DO块pg_proc校验后EXECUTE;MySQL避免DELIMITER误替换,改用客户端分隔符控制。SQL Server 里用 sp_executesql 动态生成存…...
STM32 FSMC DMA驱动LVGL刷新优化:从原理到3.5寸屏实战避坑
1. FSMC与DMA加速LVGL刷新的核心原理 第一次在STM32上跑LVGL时,最让我头疼的就是刷新卡顿问题。后来发现,传统的像素点逐行写入方式就像用吸管转移游泳池的水——效率实在太低。这里面的关键突破在于理解FSMC(Flexible Static Memory Control…...
PS2键盘鼠标接口电路设计实战指南
1. PS/2接口的前世今生 第一次拆开老式台式机时,那个紫色和绿色的小圆口总让我好奇。这种被称为PS/2的接口,其实是IBM在1987年推出的"个人系统2"(Personal System/2)的配套设计。你可能想不到,这个如今看来老…...
2026年硕士论文AI率15%以下怎么保证?实测工具推荐附操作指南
硕士论文AI率15%以下,这条线现在是很多学校的硬要求。比本科的30%严多了,但处理起来也有方法。 写这篇的起因是帮导师组里的一个师弟处理论文AI率问题。他的论文8万多字,知网AIGC检测给出AI率22%,需要降到15%以下才能送盲审。用嘎…...
小白程序员也能看懂的大模型内部原理:从加减乘除到Llama 3.1(收藏版)
本文深入浅出地解析了大语言模型(LLM)的工作原理,从基础的加减乘除运算开始,逐步构建一个生成式AI,并最终理解现代LLM和Transformer架构。文章剥去了机器学习领域的复杂术语,将一切还原为数字,帮…...
GBase 8c数据库全链路精准降本详解(下)
南大通用GBase 8c数据库(gbase database)用五招硬核技术,从存储、内存、CPU到I/O,全链路精准降本。不是省钱降质,而是让每一分硬件投入都产生最大价值。3第三招:内存精准管控,不浪费每一兆内存价格居高不下…...
MindSpore 环境配置完全指南侠
前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知,本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台,有非常多的配置参数。详细的参数列表可以…...
【仅限首批200位AI平台工程师】:手把手搭建支持LoRA热切换+Embedding降维的实时告警管道(含开源eBPF探针源码)
第一章:AI原生软件研发监控告警体系搭建 2026奇点智能技术大会(https://ml-summit.org) AI原生软件具备动态推理路径、模型权重热更新、多模态输入响应等特性,传统基于静态服务拓扑的监控体系难以捕获其运行时语义异常。构建面向AI原生应用的监控告警体…...
Gephi实战:如何用外观和布局打造专业级网络可视化图表(附详细参数设置)
Gephi实战:如何用外观和布局打造专业级网络可视化图表(附详细参数设置) 当面对复杂的网络数据时,如何让节点和边的关联关系一目了然?Gephi作为开源的网络分析工具,其强大的可视化功能能帮助我们从杂乱的数据…...
echarts-gl 网络图布局算法:ForceAtlas2 GPU 加速原理详解
echarts-gl 网络图布局算法:ForceAtlas2 GPU 加速原理详解 【免费下载链接】echarts-gl Extension pack for Apache ECharts, providing globe visualization and 3D plots. 项目地址: https://gitcode.com/gh_mirrors/ec/echarts-gl Apache ECharts GL 作为…...
