10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.1 kb
手册页(邮政编码)- 372.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

8.3.5列索引

最常见的索引类型涉及单个列,将该列的值的副本存储在数据结构中,允许快速查找具有相应列值的行。B-tree数据结构允许索引快速查找特定值、一组值或一段值,这些值对应于操作符,如>之间的等,在一个在哪里条款。

每个表的最大索引数和最大索引长度是由每个存储引擎定义的。看到第15章,InnoDB存储引擎,第十六章,替代存储引擎.所有存储引擎支持每个表至少16个索引,总索引长度至少256字节。大多数存储引擎都有更高的限制。

有关列索引的其他信息,请参见第13.1.15节,“创建索引语句”

指数的前缀

col_nameN在字符串列的索引规范中,您可以创建只使用第一个列的索引N列的字符。用这种方法只索引列值的前缀可以使索引文件更小。当你索引a时文本列,你必须指定索引的前缀长度。例如:

CREATE TABLE (blob_col, INDEX(blob_col(10)));

前缀长度最多可达767字节InnoDB使用冗余紧凑的行格式。的前缀长度限制为3072字节InnoDB使用动态压缩行格式。对于MyISAM表,前缀长度限制为1000字节。

请注意

前缀限制以字节为单位,而前缀长度则以字节为单位创建表ALTER TABLE,创建索引语句被解释为非二进制字符串类型(字符VARCHAR文本)和二进制字符串类型的字节数(二进制VARBINARY).在为使用多字节字符集的非二进制字符串列指定前缀长度时,要考虑到这一点。

如果一个搜索词超过索引前缀长度,索引将用于排除不匹配的行,并检查剩余的行以寻找可能的匹配。

有关索引前缀的其他信息,请参见第13.1.15节,“创建索引语句”

全文索引

全文索引用于全文搜索。只有InnoDB而且MyISAM存储引擎的支持全文索引,仅用于字符VARCHAR,文本列。索引总是在整个列上进行,不支持列前缀索引。有关详细信息,请参见第12.10节,"全文检索功能"

优化适用于某些类型的全文查询单InnoDB表。具有这些特征的查询特别高效:

  • 全文只返回文档ID或文档ID和搜索排名的查询。

  • 全文按降序对匹配行进行排序的查询,并应用限制子句获取前N个匹配行。要应用此优化,必须没有在哪里条款只有一个命令子句按降序排列。

  • 全文的查询COUNT (*)匹配搜索词的行值,不带其他参数在哪里条款。代码在哪里条款是匹配(文本) ('other_text”),没有任何> 0比较运算符。

对于包含全文表达式的查询,MySQL会在查询执行的优化阶段评估这些表达式。优化器不只是查看全文表达式并进行估计,它实际上是在开发执行计划的过程中对它们进行评估。

这种行为的一个含义是解释全文查询通常比优化阶段没有计算表达式的非全文查询慢。

解释对于全文查询可能会显示选择已优化的表额外的列由于在优化过程中发生匹配;在这种情况下,在以后的执行过程中不需要进行表访问。

空间索引

可以在空间数据类型上创建索引。MyISAM而且InnoDB支持空间类型的R-tree索引。其他存储引擎使用b -树为空间类型建立索引(除了存档,它不支持空间类型索引)。

内存存储引擎中的索引

内存存储引擎使用哈希默认还支持索引BTREE索引。