索引多当然好,但会影响update,而update也会影响索引

解决方案 »

  1.   

    多谢各位。这些我知道,但系统要求有不同的排序方式。如order by a,b,c 或 order by a,c,b 或 order by b,a,c ............那我该怎么办?是不是该建立如下的索引:
    索引1: a,b,c
    索引2: a,c,b
    索引3: b,a,c
     .
     .
     .请各位指点。这种情况主要发生在比较重要的表上,如发票,可能有客户、日期、货物、发票号、供应商,等等
      

  2.   

    主要是为了排序,如果只建了一个索引:a/b/c,那么在要求order by b,a,c时是否会影响效率呢?这些索引主要是用在报表输出时,客户对时间的要求也是比较高的to zjcxc:
    如果只为每一个字段建立一个索引,即建立三个索引:
    1、a    2、 b   3、c这样在order by a,b,c或其它顺序时,sql server会把三个索引综合起来使用吗?如何综合,效率如何?
      

  3.   

    to  pengdali(大力 V3.0) : 有必要的,因为我们的系统有将近上百个报表,给用户提供了多种查询、打印方式。如上面我所说的发票表,其中参与索引的字段有 客户、供应商、货品、日期、发票号等。那么就可能查某个客户购买了哪个供应商的哪些货品,或者查供应商的哪个货品在什么日期卖给了什么客户,以及查属于某个客户或某个供应商的发票等。感谢您的帮忙,我想除了建这么多的索引之外,就没有其它的办法吗?
      

  4.   


    看你系统的要求,是分析为主还是事务处理为主。除了order by
    select 和 where 里有哪些字段呢?
    如果select * from table order by a,b,c 是会用表扫描,不会用你的索引的。
      

  5.   

    你可以用index tuning wizard试一下