关于指数。我尝试了很多,但并没有真正理解它。这个现实真的如何?就这个

时间:2015-12-30 15:11:55

标签: database indexing

考虑一个存储传感器温度读数的表格:

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

1 个答案:

答案 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]上的索引将直接找到单个匹配元组(如果有)。