我有一个450GB的数据库......拥有数百万条记录。
以下是一个示例查询:
SELECT TOP 1 * FROM c WHERE c.type='water';
为了加快我们的查询速度,我考虑过只采用第一个查询,但我们注意到查询仍然需要一段时间,尽管数据库中的第一条记录符合我们的约束条件。
所以,我的问题是,SELECT TOP 1
如何真正起作用?是吗:
A)选择所有记录,然后只返回第一个(顶部)一个
type='water'
B)返回遇到type='water'
答案 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