搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小桥流水78
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
【数据结构应用题】线性表的顺序表示(含统考真题)_线性表顺序存储结构的作业题
2
split(" ") 和 split(" ", -1) 区别_split(",", -1)
3
华为防火墙用户与认证_8887端口
4
Http中get与post的区别,99%的人都理解错了吧
5
英文面试:性格爱好篇 (转)_复试英语面试性格爱好
6
Java工具集-Spring工具(获取Spring容器中的Bean对象)_hutool 获取spring容器对象
7
2024年Web前端最新Windows+VScode配置与使用git,超详细教程,赶紧收藏吧(3),2024年最新高级开发工程师面试_vscode git配置
8
aigc SD精准分区绘画功能教程_tiled diffusion的作用
9
Spring Boot中使用Swagger生成API文档
10
mac 上安装wget(转载)_mac电脑如何安装ssl enable的wget rpm
当前位置:
article
> 正文
mysql的前缀索引
作者:小桥流水78 | 2024-07-05 02:29:04
赞
踩
mysql的前缀索引
什么是前缀索引
所谓的前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品名称的前10位来建索引,这样建立起来的索引更小,查询效率更快
有点类似oracle中对字段使用left函数来建立函数索引,只不过mysql的这个前缀索引在查询时是内部自动完成匹配的,并不需要left函数
为什么要用前缀索引
一般来说,当某个字段的数据量太大,而且查询又非常的频繁时,使用前缀索引能有效的减少索引文件的大小,让每个索引页可以保存更多的索引值,从而提高了索引查询的速度
比如,客户店铺名称,有的名称很长,有的很短,如果完全按照全覆盖来建索引,索引的存储空间可能会非常的大,有的表如果索引创建的很多,甚至会出现索引存储的空间都比数据表的存储空间大很多,因此对于这种文本很长的字段,我们可以截取前几个字符来建索引,在一定程度上,既能满足数据的查询效率要求,又能节省索引存储空间
但是另一个方面,前缀索引也有他的缺点,mysql中无法使用前缀索引进行order by 和group by,也无法用来进行覆盖扫描,当字符串本身可能比较长,而且前几个字符完全相同,这个时候前缀索引的优势已经不明显了,就没有创建前缀索引的必要了
索引的选择性越高则查询效率越高,因为选择性高的索引可以让mysql在查找时过滤掉更多的行,数据查询速度更快
当某个字段内容的前几位区分度很高的时候,这个时候采用前缀索引,可以在查询性能和空间存储方面达到一个很高的性价比
如何创建前缀索引
alter table table_name add key(column_name(prefix_length))
其中prefix_length这个参数,就是前缀长度的意思,通常通过如下方式进行确认
第一步,先计算某个字段全列的区分度:
select count(distinct column_name) / count(*) from table_name;
第二步:然后在计算前缀长度为多少时和全列的区分度相似
select count(distinct left(column_name,prefix_length)) / count(*) from table_name;
最后,不断地调整prefix_length的值,直到和全列计算出区分度相近,最相近的那个值,就是我们想要的值
使用前缀索引需要注意的事项
当某个索引字段的字符串列很大时,创建的索引也就变得很大,为了减小索引体积,提高索引的扫描速度,使用索引的前部分字符串作为索引值,这样索引占用的空间就会大大减少,并且索引的选择性也不会降低很多,这时前缀索引显现的作用就会非常明显,前缀索引本质是索引查询性能和存储空间的一种平衡
对于blob和text列进行索引,或者非常长的varchar列,就必须使用前缀索引,因为MySQL不允许索引他们的全部长度
但是如果某个字段内容,比如前缀索引部分相似度很高,此时的前缀索引显现效果就不会很明显,采用覆盖索引效果会更好
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
【wpsshop博客】
推荐阅读
article
Python
tkinter
+py
mysql
学生
管理系统
_
python
tkthine+
mysql
...
该系统必须先导入
tkinter
和py
mysql
相关。数据库相关操作界面使用grid布局:tk = Tk()tk.titl...
赞
踩
article
python
实现
学生
管理系统
(
mysql
+
面向对象
)_综合应用
python
程序
设计
的知识
设计
与
实现
一...
python
实现
学生
管理系统
(
mysql
+
面向对象
)from py
mysql
import *class Mysql()...
赞
踩
article
JAVAWEB
学生
信息管理系统
保姆级教程(增删改查+
登录
注册
+
Filter
+
mysql
)eclips...
JAVAWEB
学生
信息管理系统
保姆级教程(增删改查+
登录
注册
+
Filter
+
mysql
)eclipse版_
java
学生
登...
赞
踩
article
mysql
workbench8.0
关键词
大写
_
Mysql
从入门到精通全文整理...
mysql
基础数据库基本概念MariaDB or MySQL官网:https://db-engines.com/en/r...
赞
踩
article
(十七)
前后
端
分离的
Echart
图表
--
基于
SpringBoot
+
MySQL
+Vue+Element...
通过本次任务,大家能够:(1)了解
Echart
图表
工具的使用方法;(2)掌握
前后
端
数据传递及
图表
获取数据;完成一个Hom...
赞
踩
article
MySQL
8.0
修改
Root 密码_
mysql8
修改
root
用户密码...
MySQL
8.0
修改
root
密码的方法有多种,通过以上的步骤可以轻松地实现密码的
修改
和重置。_
mysql8
修改
r...
赞
踩
article
基于
Echarts
构建
大
数据
招聘岗位
数据
可视化
大
屏_基于
echart
高校教师队伍
大
数据
页面(2)_基...
本次项目是使用
Echarts
构建
大
数据
招聘岗位信息
可视化
大
屏,使用到的技术为前端三剑客(html、css、javascr...
赞
踩
article
微
信
小
程序
+jsp+Mysql
电影
详情
的
微
信
小
程序
源代码+设计文档+说明文档_
微
信
小
程序
微
电影
搜...
微
信
小
程序
一经上线,其根植于场景的特性使得到了大量用户的青睐,服务项目涵盖了生活的各个方面,在手机上查找
电影
,早已是人们...
赞
踩
article
【
python
期末设计(节选)】
志愿
者
管理
系统
开发包含源码软件工程_
志愿
服务
系统
数据库
课程设计 p...
一、概述1.1 课题描述 在信息化高速发展的今天,各行业都应该充分利用信息化管理的软件
系统
,更好地的管理工作,让各项活...
赞
踩
article
MySQL
-- if()
函数
简单明了
_
mysql
if
函数
...
本文介绍了SQL中的IF
函数
基础用法,包括单层嵌套以及与聚合
函数
的结合实例,展示了如何根据条件在数据库查询中返回不同值,...
赞
踩
article
Node
+Vue毕设
志愿者
服务
管理
系统
(程序+mysql+
Express
)_vue
志愿者
系统
数据库
设...
"1xnq4"
志愿者
服务
管理
系统
的开发能够让用户在任何时间、任何地点参与志愿活动、查询服务时数和接收组织通知,无需繁琐的...
赞
踩
article
Java
+
Servlet
+JSP+
Mysql
+
Tomcat
实现Web学生选课管理系统_
javaweb
...
-${clazz.classno}班--// 向数据库发送sql命令并得到结果。// 向数据库发送sql命令并得到结果。...
赞
踩
article
idea
+
t
omca
t
+
mysql
从零开始部署Java
web
项目
(保姆级别)_
数据库
:
mysql
...
【还是
t
omca
t
的配置中】更新的操作可以选择upda
t
e classes and resources,这样就不需要代码...
赞
踩
article
基于JAVA+SpringBoo
t
+Myba
t
is+MYSQL的社区物业管理系统_数据库
:
mysql
...
技术栈数据库:MySQL 5.7.33后端技术:SpringBoo
t
2.3.0,MyBa
t
isPlus数据连接池:Dr...
赞
踩
article
SSM 环境
配置
(包含
IDEA
IntelliJ
、
Maven
、
Navicat
Premium
、MyS...
综述后台框架采用SSM,所以需要
配置
一下
IDEA
,使得代码可以跑通。准备
IDEA
、
Maven
3.6.1(项目管理工具)...
赞
踩
article
数据库
(
MYSQL
)
综合
演练_
数据库
综合
csdn
...
【代码】
数据库
(
MYSQL
)
综合
演练5题。_
数据库
综合
csdn
数据库
综合
csdn
...
赞
踩
article
MySQL
(
学生
表
、教师
表
、
课程
表
、
成绩
表
)多
表
查询
_
学生
表
课程
表
成绩
表
三
表
查询
...
1、
表
架构student(sid,sname,sage,ssex)
学生
表
course(cid,cname,tid) 课...
赞
踩
article
MySql
:
学生
表
、
教师
表
、
课程
表
、
分数
表
练习_
教师
学生
课程
三个
表
的设计...
文章目录前言一
、
创建
表
并初始化数据进入mysql环境:创建自己的数据库wjj:进入自己的数据库wjj:创建
表
:插入初始化...
赞
踩
article
MySQL
服务
无法
启动
_
mysql
服务
无法
启动
。...
MySQL
服务
无法
启动
可能由多种原因造成。配置信息my.ini,没有该文件,在
mysql
的安装目录下创建一个。针对已安装...
赞
踩
article
MySQL
——联表
查询
JoinON
详解...
【代码】
MySQL
——联表
查询
JoinON
详解。
MySQL
——联表
查询
JoinON
详解 ...
赞
踩
相关标签
python
tkinter
pymysql
mysql
数据库
面向对象编程
java
spring
mysql workbench8.0关键词大写
mysql从入门到精通明日科技
mysql删除check约束
mysql的单行注释
spring boot
vue.js
elementui
echarts
adb
android
大数据
信息可视化
前端
微信小程序
后端