考虑一个存储传感器温度读数的表格:
Temps(sensorID,time,temp) 假设属性对[sensorID,time]是一个键。请考虑以下查询: 从Temps中选择* 其中sensorID ='sensor541' 和时间= '05:11:02'
请考虑以下情况:
A - Temps
的任何属性都没有索引B - 仅在属性sensorID上存在索引
C - 仅在属性时间存在索引
D - 属性sensorID和时间
上存在单独的索引E - (sensorID,time)
上存在多属性索引假设表Temps有50个唯一的sensorID,每个sensorID只有20个读数。此外,Temps中每个独特时间都有10个读数。
对于每个场景A-E,假设尽可能使用一个“最佳”索引,确定可以访问以回答查询的最大元组数。 (不要计算索引访问次数。)以下哪种值组合是正确的?
1)A:1000,C:1000,D:10
2)B:10,C:10,E:10
3)B:20,C:10,E:1
4)B:1000,C:10,D:10
答案 0 :(得分:1)
场景A:由于没有索引,因此可能需要访问该表的所有元组以查找传感器541'和' 11:02'。 Temps中的元组数量为50(唯一传感器ID)* 20(每个传感器的读数数量)= 1000。
场景B:使用sensorID上的索引,20个读数将与给定的sensorID匹配,并且可能需要访问所有20个元组以查找匹配时间。
场景C:使用时间索引,10个读数将与给定时间匹配,并且可能需要访问所有10个元组以查找匹配的sensorID。
场景D:使用时间索引比使用sensorID索引更好,因此使用时间索引并且与场景C(10个元组)相同。
场景E:[sensorID,time]上的索引将直接找到单个匹配元组(如果有)。