文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (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)

The 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")
相关信息