Column Indexes

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 常见的索引类型通过复制列值至高效数据结构(如B树),实现快速查找。B树助力WHERE子句中=、>、≤、BETWEEN等运算符对应值的检索。每表至少支持16个索引,总长不少于256字节,具体限制依存储引擎而定。字符串列索引可指定前N字符,减少索引文件大小;BLOB或TEXT列索引需指定前缀长度。全文索引用于全文搜索,适用于InnoDB和MyISAM引擎的CHAR、VARCHAR、TEXT列;空间索引则针对空间数据类型,MyISAM和InnoDB采用R树索引。MEMORY引擎默认使用HASH索引,也支持BTREE索引。

最常见的索引类型涉及一列,将该列的值的副本存储在数据结构中,允许快速查找具有相应列值的行。B树数据结构允许索引在WHERE子句中快速找到与=、>、≤、BETWEEN、IN等运算符对应的特定值、一组值或一系列值。
每个表的最大索引数和最大索引长度由每个存储引擎定义。请参阅第14章“InnoDB存储引擎”和第15章“替代存储引擎”。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎都有更高的限制。

image.png

Index Prefixes
使用字符串列的索引规范中的col_name(N)语法,您可以创建仅使用列的前N个字符的索引。以这种方式仅对列值的前缀进行索引可以使索引文件小得多。为BLOB或TEXT列建立索引时,必须为索引指定前缀长度。例如:

image.png

前缀的长度最多为1000字节(InnoDB表为767字节,除非您设置了InnoDB_blarge_prefix)
Note
Prefix limits are measured in bytes, whereas the prefix length in CREATE TABLE, ALTER TABLE, and CREATE INDEX statements is interpreted as number of characters for nonbinary string types (CHAR, VARCHAR, TEXT) and number of bytes for binary string types (BINARY, VARBINARY, BLOB). Take this into account when specifying a prefix length for a nonbinary string column that uses a multibyte character set.
如果搜索词超过索引前缀长度,则使用索引排除不匹配的行,并检查其余行是否可能匹配。
有关索引前缀的更多信息
FULLTEXT Indexes

FULLTEXT索引用于全文搜索。只有InnoDB和MyISAM存储引擎支持FULLTEXT索引,并且仅支持CHAR、VARCHAR和TEXT列。索引始终在整个列上进行,不支持列前缀索引。有关详细信息,请参阅第12.9节“全文搜索功能”。
优化应用于针对单个InnoDB表的某些类型的FULLTEXT查询。具有这些特征的查询特别有效:
仅返回文档ID或文档ID和搜索排名的FULLTEXT查询。
FULLTEXT查询按分数降序对匹配行进行排序,并应用LIMIT子句获取前N个匹配行。为了应用此优化,必须没有WHERE子句,只有一个降序排列的ORDER BY子句。
仅检索与搜索词匹配的行的COUNT(*)值的FULLTEXT查询,没有其他WHERE子句。将WHERE子句编码为WHERE MATCH(text)AGAINST('other_text'),不使用任何大于0的比较运算符。
对于包含全文表达式的查询,MySQL会在查询执行的优化阶段计算这些表达式。优化器不仅查看全文表达式并进行估计,它实际上还在制定执行计划的过程中对其进行评估。
这种行为的一个含义是,全文查询的EXPLAIN通常比在优化阶段没有进行表达式计算的非全文查询慢。
全文查询的EXPLAIN可能会在Extra列中显示Select表已优化,因为在优化过程中发生了匹配;在这种情况下,在以后的执行过程中不需要对表进行访问。

Spatial Indexes
您可以对空间数据类型创建索引。MyISAM和InnoDB支持空间类型的R树索引。其他存储引擎使用B树对空间类型进行索引(ARCHIVE除外,它不支持空间类型索引)。

Indexes in the MEMORY Storage Engine
默认情况下,MEMORY存储引擎使用HASH索引,但也支持BTREE索引。

相关文章
|
Linux 编译器 C语言
Linux(3)Device Tree概念1(上)
Linux(3)Device Tree概念1
580 0
|
SQL 人工智能 安全
MCP 的 AI 好搭档
本文介绍了MCP(模型上下文协议)及其在AI领域的应用前景。MCP由Anthropic公司推出,通过标准化通信协议实现AI与数据源间的安全隔离,解决了传统AI应用中的数据隐私和安全问题。文章探讨了从LLM到MCP的进化过程,并分析了其面临的挑战,如算力不足和开放性需求。Serverless技术被提出作为解决这些问题的方案,提供弹性算力和支持安全沙箱环境。最后,文章提供了如何一键部署热门MCP Server的教程,帮助开发者快速上手并体验该协议的实际应用效果。
944 114
|
人工智能 IDE 测试技术
通义灵码2.0 - AI 程序员: AI 编程新时代的卓越助力
通义灵码是一款强大的AI编程助手,尤其在单元测试自动生成方面表现出色。它通过简化操作流程,快速生成覆盖广泛、质量较高的测试用例,支持直接编译与运行,显著提升开发效率。相比人工编写,通义灵码能大幅缩短时间成本,并更全面地覆盖边界和异常情况,但特定业务逻辑仍需人工补充。作为开发者的好帮手,它助力高效完成高质量单元测试,推动软件开发迈向新台阶。
27226 84
|
8月前
|
Ubuntu 安全 Shell
Ubuntu 精通之路:12 个核心知识点从入门到高手
掌握这些知识点需要不断的学习和实践。建议在实际工作中多应用,将理论与实践相结合。遇到问题多查阅文档,多与社区交流。只有不断实践,不断积累,才能真正掌握 Ubuntu。
|
JSON Shell API
如何通过API获取淘宝商品月销售数据
淘宝开放平台提供了丰富的API接口,允许开发者获取商品的详细信息,包括月销售数据。
|
人工智能 缓存 运维
“云+AI”守护中国年!阿里云为中国邮政、西安政务云、总台春晚重保护航
“云+AI”守护中国年!阿里云为中国邮政、西安政务云、总台春晚重保护航
407 1
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
机器学习/深度学习 存储 缓存
【博士每天一篇文献-综述】Machine Unlearning Solutions and Challenges
本文综述了机器遗忘的解决方案和挑战,全面分类并分析了精确遗忘和近似遗忘方法,探讨了它们在隐私保护、安全性增强、模型适应性提升中的应用,并提出了评价指标和未来研究方向。
1294 2
|
数据可视化 项目管理
什么是关键工作?如何识别和管理项目中的关键工作?
项目管理中的关键工作是指那些一旦延迟便会影响整个项目进度的任务。本文从实战角度探讨了关键工作的定义、识别方法及高效管理策略,强调了资源优先配置、预警机制、应急方案及频繁沟通的重要性,并介绍了几款有助于关键任务管理的项目管理工具。
909 1
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。