文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


22.3.3.6 创建和删除索引

索引用于快速查找具有特定字段值的文档。如果没有索引,MySQL 必须从第一个文档开始,然后读取整个集合以查找相关字段。集合越大,成本越高。如果集合很大,并且对特定字段的查询很常见,那么请考虑在文档内的特定字段上创建索引。

例如,以下查询在 Population 字段上进行索引后会执行得更好

mysql-js> db.countryinfo.find("demographics.Population < 100")
...[output removed]
8 documents in set (0.00 sec)

createIndex() 方法创建一个索引,您可以使用 JSON 文档定义该索引,该文档指定要使用的字段。本节是对索引的高级概述。有关更多信息,请参见 索引集合

添加非唯一索引

要创建非唯一索引,请将索引名称和索引信息传递给 createIndex() 方法。禁止重复索引名称。

以下示例指定了一个名为 popul 的索引,该索引针对 demographics 对象中的 Population 字段定义,索引为 Integer 数值。最后一个参数指示该字段是否应该要求 NOT NULL 约束。如果值为 false,则该字段可以包含 NULL 值。索引信息是一个 JSON 文档,其中包含要包含在索引中的一个或多个字段的详细信息。每个字段定义必须包含该字段的完整文档路径,并指定该字段的类型。

mysql-js> db.countryinfo.createIndex("popul", {fields:
[{field: '$.demographics.Population', type: 'INTEGER'}]})

这里,索引是使用整数数值创建的。还有其他选项可用,包括用于 GeoJSON 数据的选项。您还可以指定索引类型,这里省略了,因为默认类型 index 是合适的。

添加唯一索引

要创建唯一索引,请将索引名称、索引定义和索引类型 unique 传递给 createIndex() 方法。此示例显示了在国家名称 ("Name") 上创建的唯一索引,这是 countryinfo 集合中要索引的另一个常见字段。在索引字段描述中,"TEXT(40)" 表示要索引的字符数,"required": True 指定该字段必须存在于文档中。

mysql-js> db.countryinfo.createIndex("name",
{"fields": [{"field": "$.Name", "type": "TEXT(40)", "required": true}], "unique": true})
删除索引

要删除索引,请将要删除的索引的名称传递给 dropIndex() 方法。例如,您可以删除 popul 索引,如下所示

mysql-js> db.countryinfo.dropIndex("popul")
相关信息