语句如下:
   select PP_pid,PP_value from PValue where PP_value='-'
   在PP_value上建立了索引,上面的语句查询分析器会说没有建立 pp_value的索引,全表扫描,
   
   但是:
   select PP_value from PValue where PP_value='-'
   这时能检测到索引,分析器说是索引查找,这个时候应该是正常的,为什么会有这种情况!
   跟数据源有关系吗?pp_value 会有'-',''这样的值!!

解决方案 »

  1.   

    索引建在pp_value上,那在索引页当中,就只有pp_value列的数据.
    如果表中有聚集索引,那索引页也会包含聚焦索引键的数据作来book.
    如果没有聚集索引,所以索引页就会保存一个"文件号:页号:位置号"来指向数据页.所以说.select pp_pid,pp_value.的话,如果使用该索引.
    那就要通过这个索引中的book到数据表中找pp_pid的数据.
    因为你的索引页没有pp_pid的数据.
    -----
    通过book到数据页中找数据的话,进行的是随机IO.
    而表扫描的话,进行的是顺序IO.
    ----
    而如果这时候.优化器认为.随机IO的成本高于顺序IO.
    那优化器就会选择表扫描.而不使用这个索引..--
    而只是SELECT pp_value..那就是在该索引中,就已经能找到所需要的数据了.
    那优化器就可以直接的使用这个索引(查找或扫描)..
      

  2.   

    谢谢! PP_pid 原来是非聚焦索引,现在改成聚焦索引,就可以了!真的,老大出马就是不一样呀,节日快乐!