diff --git a/docs/uniCloud/db-index.md b/docs/uniCloud/db-index.md index be1bcf571224586a92d712c4718e67c875b7d4dc..9e9f2926916651566b0470e7ebe3decb22727715 100644 --- a/docs/uniCloud/db-index.md +++ b/docs/uniCloud/db-index.md @@ -1,8 +1,15 @@ -在集合中为查询条件的**字段**建立索引,是保证数据库性能、提升用户体验的重要手段。 +## 什么是索引 -如果您的查询操作包含了过滤条件(包含等值测试和范围过滤)或者是排序功能,则要考虑给集合添加索引。通常来说需要为以下方法/属性内用到的**字段**添加索引`where、match、orderBy、sort`,还包括clientDB内`getTree`和`getTreePath`的`startWith属性`。 +所有数据库都支持索引,索引文件通过额外占用磁盘空间,提供了一个快速查询记录的方案。查询时先查询索引文件,根据索引文件的指示再去查询真实的数据,在数据量较大时有明显的性能优势。 -如果相关字段没有设为索引,当数据表的记录数量变大后,查询会变慢甚至超时报错。 +索引有两个用途: + +1. 在集合中为查询条件的**字段**建立索引,是保证数据库性能、提升用户体验的重要手段。 +2. 索引可以控制字段中各记录的唯一性。比如某字段被设为唯一索引,则这个字段在整个数据记录集合中的值不会有重复。如果是普通唯一索引,则意味着该字段不能为null。如果是稀疏索引,则代表可以为null,但不为null的值不能重复。 + +如果您的查询操作包含了过滤条件(包含等值测试和范围过滤)或者是排序功能,或者需要唯一性,则要考虑给集合的相关字段添加索引。通常来说需要为以下方法/属性内用到的**字段**添加索引`where、match、orderBy、sort`,还包括clientDB内`getTree`和`getTreePath`的`startWith属性`。 + +如果相关字段没有设为索引,当数据表的记录数量变大后,查询会变慢甚至超时报错。这点尤其需要注意。已经有一些开发者遭遇线上故障。开发时没有配索引,因为数据量小而没有性能问题。上线后数据量越来越大,查询越来越慢,直到超时,引发线上事故。 ## 添加索引