Column Indexes

本文涉及的产品
RDS AI 助手,专业版
PolarSearch,搜索节点 4核8GB
PolarDB Agent Flow,2核4GB
简介: 常见的索引类型通过复制列值至高效数据结构(如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索引。

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