我有一个包含4164634项的宇宙数据库。每个人都遵循以下原则:
{
"id": "b1bd4070-7df3-4e04-a6b2-4284f3e104f6",
"jobId": "123",
"clientID": 1,
"eventDetails": {
"Date": "2020-01-16T16:31:45",
"Type": "Click",
"PageUrl": "some url",
"IPAddress": "100.100.100.0",
"Source": "Foo"
}
}
如果我执行不带日期过滤器的查询。例如
SELECT DISTINCT c.jobId FROM c
WHERE c.eventDetails.Source = 'Foo'
RU费用相当合理,约为17 RU。响应时间也非常快,索引查找时间为0.28 ms。
但是,如果我在其中添加日期过滤器,例如
SELECT DISTINCT c.jobId FROM c
WHERE c.eventDetails.Source = 'Foo'
AND (c.eventDetails.Date BETWEEN '2020-02-01' and '2020-02-29')
然后,RU费用增加到12397 RU。索引查找时间为19516.1499毫秒也较慢。尽管事实上第二个结果将导致结果集小得多。
默认情况下,索引是对所有内容进行索引的索引,并且没有配置其他复合索引。
有人可以解释为什么需要这么多的处理以及我可以做些什么来优化吗?