CosmosDB:SELECT TOP如何工作?

时间:2017-07-18 15:31:24

标签: sql azure-cosmosdb

我有一个450GB的数据库......拥有数百万条记录。

以下是一个示例查询:

SELECT TOP 1 * FROM c WHERE c.type='water';

为了加快我们的查询速度,我考虑过只采用第一个查询,但我们注意到查询仍然需要一段时间,尽管数据库中的第一条记录符合我们的约束条件。

所以,我的问题是,SELECT TOP 1如何真正起作用?是吗:

A)选择所有记录,然后只返回第一个(顶部)一个     type='water'

B)返回遇到type='water'

的第一条记录

3 个答案:

答案 0 :(得分:0)

假设您没有对结果进行排序(您查询的结果不是这样),那么TOP 1会在找到结果后立即返回第一个结果。然后应该结束查询。

由于c.type未编入索引并且您有数百万行,因此您遇到的延迟可能是因为它只需要DB一段时间才能找到您正在寻找的内容对于。字符串比较很慢,特别是当你谈论大量字符串时。

答案 1 :(得分:0)

Cosmos db Explorer不适用于TOP命令,这是一个现有问题。在SDK调用中运行良好。

在下面查看一些Top命令用法

https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-subquery

答案 2 :(得分:0)

尝试此行,注意偏移量限制:

SELECT * FROM c WHERE c.type='water' OFFSET 0 LIMIT 1

有关偏移量限制的更多信息:
https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-offset-limit