1、不会用到索引查找2、如果查询经常引用wid列,可以在该列另上建一个索引

解决方案 »

  1.   

    wid 是索引中的列,虽然不是复合索引开关的列,但sql 仍然可以利用此索引来定位记录你可以在查询分析器中写上此查询,按 Ctrl+L 查看执行计划.当然, 能使用默认索引,并不代表sql查询时会使用默认索引.
    具体是否会使用默认索引,还跟表中的数据有关,如果sql的查询优化器经过评估,认为不使用索引的效率更高,则不会使用索引.
      

  2.   

    如果是针对楼主给出的语句做索引,那么应该建立一个包含 (wid,date) 两列的复合索引.
    这样sql server可以直接通过索引扫描需要的记录,并且在扫描的过程中完成排序的处理.
      

  3.   

    该表记录数量20万,首次查询时速度奇慢,我怀疑没有用到索引,尝试过另建非聚簇索引列date,速度明显提升,请问是否默认的索引不合理呢?
      

  4.   

    zjcxc(邹建) 老大 说的极是;我做过100万行左右的试验: 如果返回行数在 几千 行以内,通常都可以使用索引,速度极快(实际测试为准);
      

  5.   

    根据给出的查询条件,返回记录通常在几十条左右,我如何建立正确的索引呢?是否应该取消主键列id,删除索引后,另设主键为wid,date,即自动建立索引(wid,date),这样正确吗?
      

  6.   

    建立一个包含 (wid,date) 两列的复合索引就可以了.按原来的默认索引,因为索引主要按id顺序,因此虽然wid能索引,但效率肯定不高,因为它是排在后面.主键为wid,date,即自动建立索引(wid,date),这样正确吗?可以这样理解,因为主键通过索引维护的
      

  7.   

    该表每天要增加几百条记录,主键和索引建在wid,date列,对insert操作带来的影响大吗?
      

  8.   

    建立的索引为复合索引,因为复合索引的第一列不是wid,因此无法以索引查找方式检索数据。
    但是,查询分析器会在权衡全表扫描和索引扫描的开销后,根据实际情况以索引扫描方式检索数据。