Column Indexes

简介: 常见的索引类型通过复制列值至高效数据结构(如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索引。

相关文章
|
8月前
|
安全 Ubuntu 应用服务中间件
基于code-server的云端编程环境部署
本文档描述如何在 Ubuntu 主机上部署 code-server(即“网页版 VS Code”),并通过 autossh 将服务反向隧道到跳板机、使用 Nginx 反向代理域名访问、以及使用 certbot 配置 HTTPS。适合在多设备间共享同一开发环境、并解决个人主机动态公网 IP 的访问问题。
1751 5
|
消息中间件 存储 缓存
RocketMQ原理—4.消息读写的性能优化
本文详细解析了RocketMQ消息队列的核心原理与性能优化机制,涵盖Producer消息分发、Broker高并发写入、Consumer拉取消息流程等内容。重点探讨了基于队列的消息分发、Hash有序分发、CommitLog内存写入优化、ConsumeQueue物理存储设计等关键技术点。同时分析了数据丢失场景及解决方案,如同步刷盘与JVM OffHeap缓存分离策略,并总结了写入与读取流程的性能优化方法,为理解和优化分布式消息系统提供了全面指导。
RocketMQ原理—4.消息读写的性能优化
|
SQL 人工智能 安全
MCP 的 AI 好搭档
本文介绍了MCP(模型上下文协议)及其在AI领域的应用前景。MCP由Anthropic公司推出,通过标准化通信协议实现AI与数据源间的安全隔离,解决了传统AI应用中的数据隐私和安全问题。文章探讨了从LLM到MCP的进化过程,并分析了其面临的挑战,如算力不足和开放性需求。Serverless技术被提出作为解决这些问题的方案,提供弹性算力和支持安全沙箱环境。最后,文章提供了如何一键部署热门MCP Server的教程,帮助开发者快速上手并体验该协议的实际应用效果。
1052 113
|
11月前
|
Ubuntu 安全 Shell
Ubuntu 精通之路:12 个核心知识点从入门到高手
掌握这些知识点需要不断的学习和实践。建议在实际工作中多应用,将理论与实践相结合。遇到问题多查阅文档,多与社区交流。只有不断实践,不断积累,才能真正掌握 Ubuntu。
|
机器学习/深度学习 数据可视化 算法
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
1150 5
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
|
JSON Shell API
如何通过API获取淘宝商品月销售数据
淘宝开放平台提供了丰富的API接口,允许开发者获取商品的详细信息,包括月销售数据。
1048 12
|
监控 安全 大数据
关于微信支付相关安全性问题
关于微信支付相关安全性问题
关于微信支付相关安全性问题
|
数据可视化 项目管理
什么是关键工作?如何识别和管理项目中的关键工作?
项目管理中的关键工作是指那些一旦延迟便会影响整个项目进度的任务。本文从实战角度探讨了关键工作的定义、识别方法及高效管理策略,强调了资源优先配置、预警机制、应急方案及频繁沟通的重要性,并介绍了几款有助于关键任务管理的项目管理工具。
1017 1