首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库索引混淆

数据库索引混淆
EN

Stack Overflow用户
提问于 2015-05-10 09:00:12
回答 2查看 31关注 0票数 0

我现在一直在试着找出这个问题的答案,但似乎无法理解它。谁能给我解释一下这些答案是如何计算出来的?我知道:A= 1000,B= 20,C= 10,D= 10和E= 1。我知道当没有索引时,我们必须搜索50X20,因为我们需要遍历所有的sensorID( 50 )和所有的时间(每个20 )。然后当我们把一个索引放在sensorID上时,我们只需要搜索时间。当我们把一个索引放在时间上,它降到10的时候,我主要是迷路了。它不应该是50吗?

EN

回答 2

Stack Overflow用户

发布于 2015-05-10 09:32:50

当我们把一个索引放在时间上,它降到10的时候,我主要是迷路了,不是应该是50吗?

再次仔细阅读问题:

...每个独特的时刻都有10的精确读数...

这意味着在1次索引查找操作(正如问题中所说的,您不需要考虑这一点)之后,数据库引擎只需遍历10行(元组),对sensorID应用过滤器即可找到目标记录。

票数 0
EN

Stack Overflow用户

发布于 2015-05-11 08:24:01

WHERE子句中有两个"column = constant“子句和d。“最佳”索引是两列的综合索引。这就是INDEX(sensorID, time)。这两列的顺序对于您所提供的查询并不重要,但是如果您使用的是WHERE sensorID=123 AND time BETWEEN ...,那么这个顺序肯定会更好。在my index cookbook中有进一步的讨论。

“探测”的数量是1(查找给定sensorID和时间(或开始时间)的第一个索引项),加上它将线性扫描索引以查找在给定范围内具有相同sensorID和时间的更多行。因此,它是最优的。

(如果您能从“luke”链接或我的链接中获得更多信息,我会很感兴趣。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30146614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档