select * from XXXX  where pid=1234 and speed=3 order by lmodify desc
 如果根据pid   已经确定了比较小的范围,比如只剩下50条记录
那么在这种查询下   对speed  lmodify再建立索引    
是不是已经没有意义了

解决方案 »

  1.   

    意义还是有的,只是速度的提升太小了,而且索引还占空间考虑空间和时间的取舍关系就行了
      

  2.   

    索引效率的高低原则中有这样一条:“依赖索引查询出的数据条数/数据总条数” 这个计算公式的值越小索引的效率越高。(当然了还和聚簇因子有关,这里不考虑)。因此,如果你的50条数据比上该表总数条数越小使用索引效率就越高(有个理想值,具体数据我忘记了),这个需要你来衡量下,比如这个比值是个很小的小数就可以使用索引。而且毕竟每条数据最终要查询到,都要定位到在磁盘中的具体位置,使用索引则可以达到这种效果。如果该比值很大,则如楼上所说,使用索引反而不如全表扫描快。总之一句话:尽量加载最少的块获取最多的数据。希望说的能帮上楼主,多交流,呵呵呵。
      

  3.   

    楼上正解,讲的也很详细。
    如果在已知结果集上,能确定只有50条记录,就没有必要加索引了,
    即在50条中查询全部跟查询几条效果是差不多的