MySQL有5种索引?

仿真学习系列(四十一):Sigrity仿真之PDN阻抗提取 电源分配网络(Power Distribution Network,简称PDN)是电子系统中至关重要的部分,主要用于将电源从电源输入端传输到各个组件。PDN的设计质量直接影响到系统的电源完整性和信号稳定性,尤其是在高速设计中,PDN的阻抗特性对电源噪声、地弹(ground bounce)和电源完整性(Power Integrity,简称PI)具有重要影响。 阅读详情

MySQL(尤其是 InnoDB 引擎)支持多种索引类型,不同索引适用于不同场景。以下是 MySQL 中常见的索引类型及其特点,按逻辑分类和物理结构两个维度说明:


一、按逻辑用途分类(常用)

1. 主键索引(Primary Key)

  • 唯一且非空,一张表只能有一个。
  • InnoDB 中,主键索引就是 聚簇索引(Clustered Index):数据行与索引存储在一起。
  • 选择原则:尽量使用自增整数(避免页分裂),避免使用 UUID(随机写性能差)。

2. 唯一索引(Unique Index)

  • 索引列的值必须唯一,但允许有 NULL(多个 NULL 不冲突)。
  • 适用于:手机号、订单号、用户 ID 等业务唯一字段。
  • 创建方式:
    CREATE UNIQUE INDEX idx_user_phone ON users(phone);
    

3. 普通索引(Secondary Index / Normal Index)

  • 最基础的索引类型,允许重复值、允许 NULL。
  • 用于加速 WHERE、JOIN、ORDER BY 等查询。
  • 示例:
    CREATE INDEX idx_order_status ON orders(status);
    

4. 组合索引(Composite Index / 联合索引)

  • 对多个列创建一个索引,如 (col1, col2, col3)。
  • 遵循 最左前缀原则(Leftmost Prefix Rule):
    • 查询条件必须从最左列开始,才能命中索引。
    • 例如:索引 (a, b, c) 可用于 WHERE a=1、WHERE a=1 AND b=2,但不能用于 WHERE b=2。
  • 建议:把区分度高(选择性好)的列放前面。

5. 前缀索引(Prefix Index)

  • 对长字符串字段(如 VARCHAR(255))只索引前 N 个字符。
  • 减少索引大小,提升性能。
  • 示例:
    CREATE INDEX idx_email_prefix ON users(email(20)); -- 只索引前20字符
    
  • ⚠️ 注意:前缀长度需通过 SELECT COUNT(DISTINCT LEFT(email, N)) / COUNT(*) 估算区分度。

二、按物理结构分类(InnoDB)

1. 聚簇索引(Clustered Index)

  • 数据即索引:叶子节点存储完整的数据行。
  • InnoDB 自动使用主键作为聚簇索引;若无主键,则选择第一个唯一非空索引;否则用隐藏的 row_id。
  • 优点:主键查询极快(一次 I/O)。
  • 缺点:二级索引需“回表”(先查二级索引 → 再查聚簇索引)。

2. 二级索引(Secondary Index)

  • 叶子节点存储的是主键值,不是完整数据。
  • 查询流程:二级索引 → 主键值 → 聚簇索引 → 获取数据(回表)。
  • 优化回表:使用 覆盖索引(Covering Index),即查询字段全部包含在索引中,无需回表。

三、特殊索引类型(特定场景)

1. 全文索引(Full-Text Index)

  • 用于 TEXT 或 VARCHAR 字段的全文搜索(如文章内容搜索)。
  • 支持 MATCH() AGAINST 语法。
  • InnoDB 从 MySQL 5.6 开始支持。
  • 示例:
    CREATE FULLTEXT INDEX idx_content ON articles(content);
    SELECT * FROM articles WHERE MATCH(content) AGAINST('数据库');
    
  • ⚠️ 不适用于电商商品名等短文本(用 ES 更合适)。

2. 空间索引(SPATIAL Index)

  • 用于 GEOMETRY 类型字段(如地图坐标、区域)。
  • 仅 MyISAM 和 InnoDB(MySQL 5.7+)支持。
  • 使用 R-TREE 结构,支持 ST_Contains() 等空间函数。

四、不推荐或已废弃的索引

索引类型说明
HASH 索引Memory 引擎支持,InnoDB 不支持(但自适应哈希索引 AHI 是内部优化)
RTREE 索引旧版 MyISAM 用,现已被 SPATIAL 取代

💡 InnoDB 的 自适应哈希索引(Adaptive Hash Index, AHI) 是 InnoDB 自动为热点索引页构建的内存哈希结构,无需手动创建,可通过 SHOW ENGINE INNODB STATUS 查看。


五、索引设计黄金法则(电商场景重点)

  1. 主键自增:避免 UUID 导致聚簇索引频繁页分裂。
  2. 组合索引合理排序:高频过滤字段放前,范围查询字段放后(如 (user_id, create_time))。
  3. 避免冗余索引:(a,b) 和 (a) 同时存在是冗余的。
  4. 大字段慎建索引:如 description 字段,优先考虑前缀索引或异构存储(如 Elasticsearch)。
  5. 监控慢查询:用 EXPLAIN 分析是否命中索引,关注 type(最好 ref/range,避免 ALL)。

六、查看索引命令

-- 查看表索引
SHOW INDEX FROM table_name;

-- 查看执行计划
EXPLAIN SELECT * FROM orders WHERE user_id = 100;

-- 查看索引使用统计(MySQL 8.0+)
SELECT * FROM performance_schema.table_io_waits_summary_by_index_usage
WHERE object_schema = 'your_db' AND object_name = 'your_table';

✅ 总结:
在电商开发中,主键索引 + 唯一索引 + 合理的组合索引 足以覆盖 95% 场景。
牢记:索引不是越多越好,而是越精准越好。

笔试题-2023-星宸-数字IC设计【纯净题目版】 4 笔试题-2023-星宸-数字IC设计【纯净题目版】 阅读详情

相关推荐

告别手动!用Python+CATIA V5/V6自动生成三视图和标题栏(附完整代码)

本文详细介绍了如何利用Python和CATIA V5/V6实现工程图自动生成,包括三视图布局和标题栏填写。通过COM接口调用和智能算法,系统能自适应不同尺寸模型,大幅提升设计效率。附完整代码和部署方案,帮助团队实现从手动到自动化的转变。

weixin_42699679的博客 354

mysql索引有哪些类型?

MySQL目前主要有的索引类型为:普通索引、唯一索引、主键索引、组合索引、全文索引。 通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 下面我们来看看MySQL目前主要有的索引类型: 1、普通索引 普通索引是最基本的索引,它没有任何限制,值可以为空;仅加速查询。可以通过以下几种方式来创建或删除: 1)、直接创建索引 CREATE INDEX index_name ON ta

Iam8600的博客 3万+

储能变流器(Power Control System——PCS)设计原理

储能变流器(Power Control System——PCS)可控制蓄电池的充电和放电过程,进行交直流的变换,在无电网情况下可以直接为交流负荷供电。PCS 由 DC/AC 双向变流器、控制单元等构成。PCS 控制器通过通讯接收后台控制指令,根据功率指令的符号及大小控制变流器对电池进行充电或放电,实现对电网有功功率及无功功率的调节。 PCS 控制器通过 CAN 接口与 BMS 通讯,获取电池组状态信息,可实现对电池的保护性充放电,确保电池运行安全。   储能变流器(PCS)可控制蓄电池的充电和放电过程,进

Zhouengineer的博客 5万+

MySQL有哪些索引?

mysql中有主键索引、唯一索引、普通索引、组合索引、全文索引

一名后端程序猿 1万+

c++通过自然语言处理技术分析语音信号音高

其中,缓冲区大小为2048,最小基频为80Hz,最大基频为1000Hz。通常情况下,音高在85Hz到255Hz之间,因此可以根据实际情况修改最小和最大基频值。C++中可以使用数字信号处理库或语音处理库,比如MATLAB、Praat、YIN算法等等来进行音高分析。对于语音信号的音高分析,可以使用基频提取技术。基频是指一个声音周期的重复率,也就是一个声音波形中最长的周期。通常情况下,人的声音基频范围是85Hz到255Hz。这段代码使用了YIN算法来计算语音信号的基频,得出的结果即为音高。

SYC20110120的博客 1729

【异常】安装hermes-agent时Git克隆大仓库报错:error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CAN

摘要:本文分析了Ubuntu服务器执行Git递归克隆时出现的网络传输中断错误(HTTP/2流异常关闭、数据截断)。主要原因是网络限制、协议兼容问题和缓冲区不足。提供了四种解决方案:1)扩大Git HTTP缓冲区;2)切换为HTTP/1.1协议;3)采用浅克隆+分步拉取子模块;4)网络优化措施。重点推荐浅克隆分步拉取作为最有效方案,所有方法无需重启即可生效,可快速解决大仓库递归克隆失败问题。

奶爸的编程之路,也就一周冷个三天 671

MySQL索引有哪些分类,你真的清楚吗?

MySQL索引都有哪些分类? 按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引。 按物理存储分类可分为:聚簇索引、二级索引(辅助索引)。 按字段特性分类可分为:主键索引、普通索引、前缀索引。 按字段个数分类可分为:单列索引、联合索引(复合索引、组合索引)。

在路上的博客 3万+

基于STM32L4XX、HAL库的MAX13487EESA RS485总线收发器驱动程序设计

MAX13487EESA是一款3.3V供电的RS-485/RS-422收发器,由Maxim Integrated生产。PA4 (控制引脚) ---> /RE, DE (连接在一起)具有±15kV ESD保护的驱动器输出和接收器输入。半双工RS-485/RS-422通信。工业温度范围:-40°C至+85°C。工作电压范围:3.0V至3.6V。数据速率高达250kbps。

zhusl6688的博客 690

MySQL 的索引类型有哪些?应该怎么选择?

本文解析MySQL的索引类型(主键、唯一、普通、全文、空间、组合),适用场景及选择策略!

分享即是最好的学习 4174

SAP物料主数据中的销售视图。这是一个在销售与分销模块中至关重要的核心主数据,直接关系到从报价到交货的整个销售流程

SAP物料主数据的销售视图是销售流程的核心基础,它定义了物料如何被销售、定价、开票和交付。销售视图包含五个关键控制点:1)基本销售数据控制物料销售状态;2)销售组织数据决定销售渠道和产品分类;3)通用物料数据管理销售描述和税务分类;4)交货计划控制交付参数;5)开票计划管理定价规则。这些设置直接影响销售流程顺畅度、数据准确性、客户满意度、财务合规性和业务灵活性。建议将销售视图创建纳入新产品引入流程,并建立规范的维护机制,确保业务变化时及时更新配置。

金牌架构师 667

Virtuoso 中的tech file 详细说明

工艺文件(Techfile)是集成电路设计中的核心配置文件,定义了从晶圆制造到版图验证全流程所需的工艺规则和图层属性。在Cadence Virtuoso平台中,Techfile作为连接设计与制造的桥梁,主要包含以下内容: 图层体系定义 金属层、介质层、多晶硅层等物理图层的编号、名称和显示属性 图层用途(DRAW、MASK等)及图层-用途组合(LPP)的优先级 设计规则约束 几何尺寸规则(最小线宽/间距) 包围和延伸规则 密度规则和特殊工艺规则(如天线效应) 器件定义 MOS管、电阻等器件的图层构成 电学参数

u013620135的博客 8134

温故MySQL - 04 MySQL索引有哪几种类型?

文章目录问题01:索引有哪几种类型?问题02:如何创建索引? 问题01:索引有哪几种类型? MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 按照功能逻辑,索引主要分为:普通索引、唯一索引、主键索引、全文索引。 按照物理实现方式,索引分为:聚簇索引和非聚簇索引。 按照作用字段个数,索引分为:分成单列索引和联合索引。 1. 普通索引 在创建普通索引时,不附加任何条件,只是用于提高查询效率。比如在student表中为name建立索引,在查询时使用该索引可以提高查询效率。 2.

你今天真好看呀 747

区块链技术概述:从比特币到Web3.0

区块链技术正重塑数字世界的信任机制。本文系统梳理了区块链的发展路径:从比特币的PoW共识和UTXO模型,到以太坊的智能合约和账户体系,直至Web3.0的去中心化互联网愿景。文章详细解析了区块链的核心特性(去中心化、不可篡改等)和数据结构,通过流程图展示了比特币交易生命周期和智能合约执行流程,并对比了Web2.0与Web3.0的关键差异。最后,用Python代码实现了包含区块类、交易处理和挖矿机制的简易区块链系统,为理解区块链底层原理提供了实践参考。

闲人编程的博客 458

mysql 5.5以上 加索引快_MySQL 5.1和MySQL 5.5创建索引速度对比

MySQL 5.1和MySQL 5.5创建索引速度对比,只需更新索引页,和之前相比,速度会更快。但创建聚集索引(主键)时,或者是外键时,还是在MySQL5.1.X版本里,聚集索引创建和删除的过程:1、 创建一个和原表结构一样的空表,然后创建聚集索引;2、 拷贝原表的数据到新表,这时会对原表加一个排他锁,其他的会话dml操作会阻塞,从而保证数据的一致性;3、 复制完毕后删除掉原表,并把新表改名为原表...

weixin_34620780的博客 292

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

mysql普通索引性能_优化MySQL 5.5版本普通索引的增删性能

本节主要内容:MySQL 5.5版本对普通索引的增删性能的优化。说明:传说5.5对于非聚集索引添加、删除性能上做了很大改善,在5.5之前版本中,ADD INDEX,DROP INDEX 需要拷贝整个表的,这样在生产环境上修改索引带来的风险很大。即便性能提高了,大家还是要慎重考虑索引的使用。下面我们针对这些内容做下测试。基本表:复制代码 代码示例:CREATE TABLE `task` (`UID`...

weixin_42500684的博客 134

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql5.5索引_MySQL入门很简单: 5 索引

1. 索引的含义和特点索引:创建在表上,是对数据库表中一列或多列的值进行排序的一种结构。存储类型: B性树(BTREE)索引和哈希(HASH)索引; InnoDB和MyISAM支持BTREE索引, MEMORY支持BTREE索引和HASH索引优缺点: 优点——提高检索数据的速度; 缺点: 创建和维护索引需要耗费时间2. 索引分类1)普通索引:不加任何限制条件2)唯一性索引:使用UNIQUE参数(...

weixin_35805593的博客 281

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

“MySQL5.6”、“索引优化”,其实都是索引下推

如果你在面试中,听到“MySQL5.6”、“索引优化” 之类的词语,你就要立马get到,这个问的是“索引下推”。 什么是索引下推 索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率。 索引下推优化的原理 我们先简单了解一下MySQL大概的架构: MySQL服务层负责SQL语法解析、生成执行计划等,并调用存储引擎层去执行数据的存储和检索。 索引下推的下推其实就是指将部分上层(服务层)负责的事情,交给了

qq_64513388的博客 2566

深入解析 MySQL 5.7 多字段排序问题及 MySQL 8.0 降序索引优化

MySQL 5.7在多字段降序排序时存在性能瓶颈,因其索引仅支持升序存储,导致混合排序方向会触发低效的filesort。MySQL 8.0引入降序索引后,通过显式指定字段排序方向(如CREATE INDEX idx_a_desc ON t(a DESC)),可显著优化多字段排序性能。实验表明,索引与查询的排序方向完全匹配时,8.0版本能避免filesort,提升千万级数据查询效率。优化策略包括:按查询模式设计索引、统一排序方向、使用覆盖索引,5.7版本可考虑应用层排序或冗余表方案。

qq_46371374的博客 1137

mysql5.6 索引下推

参考 MySQL索引下推,原来这么简单! “MySQL5.6”、“索引优化”,其实都是索引下推 1、什么是索引下推 索引条件下推,也叫索引下推,英文全称Index Condition Pushdown,简称ICP。 索引下推是MySQL5.6新添加的特性,用于优化数据的查询。 在MySQL5.6之前,通过使用非主键索引进行查询的时候,存储引擎通过索引查询数据,然后将结果返回给MySQL server层,在server层判断是否符合条件。 在MySQL5.6及以上版本,可以使用索引下推的特性。当存在索引的列做

try to do 373

Mysql5.7 索引

怎么理解索引: 一个表中有很多列,对其中一个列创建了索引,那么mysql就会对这个列的数据进行排序,好处就是查询会非常的快。 B+树的缺点: 当对表的字段进行修改时,维护B+树索引的代价会比较大。 ...

u010648194的博客 1328

mysql 5.7全文索引_MySql5.7 使用全文索引

一、ngram and MeCab full-text parser插件全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文。缘由是他从来都使用空格来作为分词的分隔符,而对于中文来讲,显然用空格就不合适,需要针对中文语义进行分词。但从MySQL 5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效。二、必要的参数设置在使用中文检索...

weixin_33603963的博客 1109

mysql 5.7 空间索引_MySQL 5.7分支新增空间索引功能

mysql 5.7 中文文档_Mysql 5.7 官方文档翻译始于 2017年4月1日-愚人节1.1 MySQL 5.7 新功能本章节介绍了MySQL 5.7 新版本中新增、废弃、删除的功能。 在1.5章节 Section 1.5, “Server and Status Variables and Options Added, Deprecated, or Removed in MySQL 5....

weixin_36185435的博客 534

mysql 5.7索引长度_MySQL 中索引的长度的限制

单列索引的长度的限制(5.6里面默认不能超过767bytes,5.7不超过3072bytes):起因是256×3-1=767。这个3是字符最大占用空间(utf8)。但是在5.5以后,开始支持4个字节的uutf8。255×4>767, 于是增加了一个参数叫做 innodb_large_prefix# 256的由来: 只是因为char最大是255,所以以前的程序员以为一个长度为255的index...

weixin_35719518的博客 1054

mysql 5.6 函数索引_MySQL里虚拟函数索引的方法分享

MySQL自古以来就不提供函数索引这么复杂的功能。那怎么在MySQL里面实现这样的功能呢? 我们先来看看函数索引的概念。函数索引,也可称为表达式索引,也就是基于字段以特定函数(表达式)建立索引来提升查询性能之需。函数索引的优势在于更加精确的获取所需要的数据。MySQL 5.7提供了一个新的特性,虚拟列,可以很完美的解决这个问题。在介绍虚拟列之前,我们来看看在MySQL里面普通索引的范例。示例表结构...

weixin_39895283的博客 218

mysql 5.7 新特性之 json 类型 创建索引

mysql原生并不支持json列中的属性索引,但是我们可以通过mysql的虚拟列间接的为json中的某些属性创建索引,原理就是为json中的属性创建虚拟列,然后通过给虚拟列建立索引,从而间接的给属性创建了索引。在MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column,前者只将Generate...

bugs4j的博客 1万+

mysql 5.6 全文索引_MySql5.6全文索引 及 5.7 中文索引插件ngram

MySql 5.6.4 之后开始支持 innodb 全文索引,之前版本只能使用MyISAM直接开始:创建一个表和索引USE test;CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT,FULLTEXT KEY `idx_ft_tb` (ti...

weixin_39981624的博客 529
上一篇: 电商交易系统 MySQL + Java 开发实践指南
下一篇: MySQL8 特性与场景优化
旷野说
博客等级 码龄9年 361粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值