我现在一直试图找出这个答案的答案,但似乎无法绕过它。任何人都可以向我解释这些答案是如何计算的?我知道:A = 1000,B = 20,C = 10,D = 10和E = 1.我知道当没有索引时,我们必须搜索50 X 20,因为我们需要通过所有的sensorID( 50)和所有时间(每个20)。然后,当我们在sensorID上放置一个索引时,我们只需搜索时间。当我们按时间编制索引并将其降低到10时,我主要迷路了。不应该是50吗?
答案 0 :(得分:0)
当我们按时填写一个索引并将其降低到10时,我主要迷失了。难道不是50吗?
仔细阅读问题:
...每个独特的时间都有 10 读数......
这意味着在1个索引查找操作之后(你不需要像在问题中所说的那样考虑)数据库引擎必须遍历10行(元组),在{{上应用过滤器1}}找到目标记录。
答案 1 :(得分:0)
WHERE
子句中有两个“column = constant”的子句。 “最佳”INDEX是两列的复合索引。也就是INDEX(sensorID, time)
。对于您提供的查询,两列的顺序无关紧要,但如果您有WHERE sensorID=123 AND time BETWEEN ...
,则该顺序肯定更好。 my index cookbook中的进一步讨论。
“探测”的数量是一个(找到给定的sensorID和时间(或时间的开始)的第一个索引条目),并且它将线性扫描INDEX以找到具有相同sensorID 和在给定范围内的时间。因此,它是最佳的。
(如果你从'luke'链接或我的链接中获得更多信息,我会很高兴听到。)