当前位置: 首页 > news >正文

Mysql:主键索引 唯一索引 普通索引 前缀索引

这四种索引的区别主要在于:是否唯一、是否自动建立、是否只索引部分字符串

1. 主键索引

主键索引由PRIMARY KEY创建:

CREATE TABLE users ( id BIGINT PRIMARY KEY, name VARCHAR(50) );

特点:

一张表只能有一个主键

主键值必须唯一

不能为NULL

MySQL 会自动创建主键索引

InnoDB 中,主键索引通常是聚簇索引

叶子节点保存完整的行数据

可以把主键理解为每一行数据的唯一身份证号

2. 唯一索引

唯一索引要求索引列的值不能重复:

CREATE UNIQUE INDEX uk_email ON users(email);

例如:

a@example.com b@example.com a@example.com -- 不允许重复

特点:

一张表可以有多个唯一索引

不允许重复值

MySQL 中唯一索引通常允许多个NULL

InnoDB 中,如果表已经有主键,唯一索引一般是二级索引

也可以通过表结构定义:

CREATE TABLE users ( id BIGINT PRIMARY KEY, email VARCHAR(100) UNIQUE );

主键和唯一索引都保证唯一,但语义不同

主键:这行数据的主要身份标识 唯一索引:某个字段不能重复

3. 普通索引

普通索引也叫非唯一索引,允许索引值重复:

CREATE INDEX idx_age ON users(age);

例如多个用户都可以是18岁:

18 18 20 25

它的主要作用是加快查询:

SELECT * FROM users WHERE age = 18;

特点:

一张表可以有多个普通索引

允许重复值

不负责保证数据唯一

通常属于二级索引

4. 前缀索引

前缀索引只对字符串字段的前 N 个字符建立索引:

CREATE INDEX idx_email_prefix ON users(email(10));

这表示只索引email的前 10 个字符,而不是整个字段。

例如:

abcdef123456@example.com abcdef123499@example.com

如果只建立前 6 个字符的前缀索引,它们在索引中都会表现为:

abcdef

特点:

减少索引占用的磁盘空间

降低索引维护成本

适合很长的字符串字段

前缀太短可能导致重复值很多,查询效率下降

查询时可能仍需要回表判断完整字符串

例如:

SELECT * FROM users WHERE email LIKE 'abcdef%';

可能使用前缀索引

但:

WHERE email LIKE '%example.com'

通常无法有效使用这种索引,因为查询条件不是从字符串开头匹配

前缀索引也可以和唯一索引组合,但此时约束的是“前 N 个字符不能重复”:

CREATE UNIQUE INDEX uk_code_prefix ON products(code(8));

这不代表完整的code不能重复,只代表前 8 个字符不能重复

对比总结

类型是否唯一一张表可有几个主要作用
主键索引必须唯一且非 NULL1 个唯一标识记录
唯一索引不允许重复,通常允许多个 NULL多个保证字段唯一并加速查询
普通索引允许重复多个加速普通查询
前缀索引取决于是否和 UNIQUE 组合多个只索引字符串前缀,节省空间

需要特别注意:

“前缀索引”描述的是索引范围,“主键、唯一、普通”描述的是索引约束类型,它们不是完全互斥的分类。比如可以有普通前缀索引,也可以有唯一前缀索引

http://www.cnnetsun.cn/news/3857030.html

相关文章:

  • 探秘浙江省住房与城乡建设厅网站:政策解读、办事指南与民生热点全解析,让数据多跑路让百姓少跑腿
  • 终极指南:3步免费快速上手NickelMenu,彻底解放你的Kobo阅读器!
  • 网站建设深度解析:2024年企业如何通过高质量的公司新闻提升品牌信任度与转化率
  • 3分钟搞定抖音内容批量下载:从零开始打造你的个人数字素材库
  • 揭秘嘉兴市建设局网站:从政策解读到便民服务的一站式深度体验与未来展望
  • 分布式事务 Seata:从原理到实战完整指南
  • 专业医院网站建设服务_利法拉网络助力医疗机构数字化转型与品牌建设
  • 突破三角网格局限:stltostp实现STL到STEP的无依赖转换技术解析
  • 智能电话机器人系统
  • 终极指南:如何用OpenCore Legacy Patcher让旧Mac免费运行最新macOS系统
  • 网站建设验收确认书:项目交付的最后一道防线与避坑指南
  • 3个关键配置详解:避免XIAOMUSIC_HOSTNAME重复端口问题的实战指南
  • 3分钟上手nunif:2D视频转3D立体与AI超分辨率的完整指南
  • 湖南建设监理协会网站:探索行业发展的数字纽带与实践指南
  • AI写React组件准确率已达87.3%?实测12款AI编程助手,这份选型决策矩阵请立刻收藏
  • 3个理由告诉你为什么Clypra是免费视频编辑的最佳选择
  • 网站建设中手机版:别再拿“手机正在建设中”糊弄客户了,这才是真正的转型焦虑
  • Android自动化从未如此简单:PageEyes Agent零代码操作指南
  • 如何为电视盒子安装Armbian系统:3步完成安卓转Linux改造
  • 终极指南:5步掌握开源AI金融预测模型Kronos
  • 企业官网定制与数字化转型深度解析:选择江苏国龙翔建设网站的专业价值与实战指南
  • Buzz本地音频转录终极指南:5分钟实现免费离线语音转文字
  • 山东建设厅执业资格注册中心网站:详解山东建设厅执业资格注册中心网站使用指南与行业深度解析
  • Peeky断言与模拟功能教程:使用Expect和Sinon编写强大测试
  • Unity Texture2D底层原理与性能优化全解析
  • 招聘网站建设方案模板怎么选?揭秘高转化率的底层逻辑与实操指南
  • 为什么你的AI韩语APP总在“ㅂ/ㅍ”音上翻车?语音识别底层声谱图缺陷大揭秘
  • Docker安装并运行Redis
  • 专业摄影网站建设方案及SEO优化策略:如何打造高转化率摄影师个人官网
  • 三步搞定2D转3D视频:nunif开源工具让你的普通视频秒变VR立体电影