# Cloud Save 查询

> Understand indexes and query types for both numerical and text data stored in player and game data.

您可以使用 Cloud Save 来查询存储在**玩家数据**和**游戏数据**中的数字和文本数据。

查询功能可用于多种目的，例如创建公会或氏族系统、添加匹配、实施经济系统或拍卖行，或在多人游戏环境中返回 NPC 或物品数据。

## 创建索引##index-creation

您需要先在 Cloud Save 中为数据编制索引，然后才能查询数据。您可以在 [Unity Cloud 后台](https://cloud.unity.com/home/organizations/default/projects/default/environments/default/cloud-save/indexes)、[Unity CLI](https://services.docs.unity.com/guides/ugs-cli/latest/cloud-save/Cloud%20Save%20Command%20Line/overview/) 或 [Admin REST API](/cloud-save/reference/rest-api.md) 中创建和管理索引。

您可以构建单个 Cloud Save 键的索引，或按特定顺序组合多个键以形成复合索引。Cloud Save 为每个键标记一个布尔值，以指定索引是按升序还是降序排序。使用索引无需支付额外费用。

## 查询类型##query-types

Cloud Save 支持以下类型的查询：

* `EQ` - 等于
* `NE` - 不等于
* `LT` - 小于
* `LE` - 小于或等于
* `GT` - 大于
* `GE` - 大于或等于

Cloud Save 会将值与索引值进行比较，对于字符串数据，按词法进行比较，对于数字数据，按数值进行比较。

## 随机样本##random-sampling

如果不希望返回可以分页的完整排序结果集（默认行为），您可以让 Cloud Save 返回查询的随机结果样本。

要使用此功能，请在执行查询时传递 `sampleSize` 选项并指定希望 Cloud Save 返回的最大结果数。

您可以将随机样本功能用于以下用例：显示玩家可以加入的一些公会，或随机匹配两个具有相似统计数据的玩家。

## 限制##limits

### 查询限制##limits-on-queries

可从客户端或服务器查询的数据由索引键的**访问类**决定：

* 使用**面向 Unity 的 Cloud Save SDK**，游戏客户端可以[查询公开访问类中的玩家数据](/cloud-save/tutorials/unity-sdk.md#query-player-data)，或者[查询存储在默认访问类中的游戏数据](/cloud-save/tutorials/unity-sdk.md#query-custom-items)。

* 使用[面向 Cloud Code 的 Cloud Save SDK](https://cloud-code-sdk-documentation.cloud.unity3d.com/cloud-save/)，或者使用 CLI 或 Admin REST API，可以查询任何访问类（例如**默认**、**公开**、**私有**或**受保护**）中的索引键。

### 索引限制##limits-on-indexes

* 可以编制索引的值的最大大小为 128 字节：

  大于 128 字节的值不会被索引；如果您尝试将大于 128 字节的值写入到索引键，则索引会失败（数据仍会保存到 Cloud Save，但数据不会被索引）。
* 最多可以定义 20 个键，这些键可以在所有索引、所有访问类、玩家状态和游戏状态中编制索引。

  这意味着，可以有多达 20 个索引，每个索引各包含一个索引键，或者一个索引包含 20 个索引键，或是这两者之间的任意组合。只要索引键的总数不超过限制即可。

> **Important:**
>
> **重要**：您只能查询创建索引后保存的数据。查询响应中不包含您在创建索引之前保存的任何数据。

## 其他资源##additional-resources

* [Unity Cloud 后台中的 Cloud Save](https://cloud.unity.com/home/organizations/default/projects/default/environments/default/cloud-save/indexes)
* [使用 Unity SDK 查询玩家数据](/cloud-save/tutorials/unity-sdk.md#query-player-data)
* [使用 Unity SDK 查询自定义项](/cloud-save/tutorials/unity-sdk.md#query-custom-items)
* [面向 Cloud Code 的 Cloud Save SDK](https://cloud-code-sdk-documentation.cloud.unity3d.com/cloud-save/)
* [Cloud Save REST API](https://services.docs.unity.com/cloud-save/v1/index.html#section/Introduction)
* [Cloud Save Admin REST API](https://services.docs.unity.com/cloud-save-admin/v1/index.html#section/Introduction)
