请问大家建立索引的时候是根据 order by 的条件、还是根据where里的条件建立索引的??
查询的时候根据不同要求where、order by 的内容又有差别。不知怎么办好。

解决方案 »

  1.   

    针对where 建索引吧?
    order by 目的是排序
      

  2.   

    问题是搜索的条件复杂啊,
    举个例子:当点击搜索时可能产生的语句,(注:the_id是identity,yuyan是语言):where is_del=0 and topic like @search_text order by the_id desc 搜索全部语言

    where yuyan_id=@yuyan_id and is_del=0 and give_date between @date1 and @date2 order by give_date desc  搜索部分语言和时间

    where yuyan_id=@yuyan_id and is_del=0 and give_date between @date1 and @date2 and topic like @search_text order by give_date desc这样我该如何建立索引呢,是建一个呢,还是建3个呢?建一个呢好像无法满足,建多个呢怕影响速度。怎么办?
      

  3.   

    在topic, yuyan_id上建查询频率比较高的字段建
      

  4.   

    give_date ,yuyan_id上建索引。。
      

  5.   

    针对数据库里的数据经常要搜索的条件也就是说where后面要用到字段建索引。
      

  6.   

    根据实际的需要建立不同的索引
    先看看怎么建立聚集索引和非聚集索引你的问题就解决了。
    通常where后的建立非聚集索引
    通常order by后建立聚集索引
    而一个表中只能建立一个聚集索引和多个非聚集索引。
    还是先看看sql help吧!
      

  7.   

    “针对数据库里的数据经常要搜索的条件也就是说where后面要用到字段建索引。”问题是这三句都是对同一个表经常要搜索的条件,当客户勾选不同的条件就产生例如上面3句中的一句,所以这3句都是查询频率比较高,(其实在第一句里面加入@give_date又会产生第四句。)根据这个例子,如果我对这个表是否应该
    建立 第一个索引 is_del、give_date
    建立 第二个索引 yuyan_id、is_del、give_date  (当然都是非聚集索引)