多谢各位。这些我知道,但系统要求有不同的排序方式。如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 . . .请各位指点。这种情况主要发生在比较重要的表上,如发票,可能有客户、日期、货物、发票号、供应商,等等
主要是为了排序,如果只建了一个索引:a/b/c,那么在要求order by b,a,c时是否会影响效率呢?这些索引主要是用在报表输出时,客户对时间的要求也是比较高的to zjcxc: 如果只为每一个字段建立一个索引,即建立三个索引: 1、a 2、 b 3、c这样在order by a,b,c或其它顺序时,sql server会把三个索引综合起来使用吗?如何综合,效率如何?
to pengdali(大力 V3.0) : 有必要的,因为我们的系统有将近上百个报表,给用户提供了多种查询、打印方式。如上面我所说的发票表,其中参与索引的字段有 客户、供应商、货品、日期、发票号等。那么就可能查某个客户购买了哪个供应商的哪些货品,或者查供应商的哪个货品在什么日期卖给了什么客户,以及查属于某个客户或某个供应商的发票等。感谢您的帮忙,我想除了建这么多的索引之外,就没有其它的办法吗?
看你系统的要求,是分析为主还是事务处理为主。除了order by select 和 where 里有哪些字段呢? 如果select * from table order by a,b,c 是会用表扫描,不会用你的索引的。
索引1: a,b,c
索引2: a,c,b
索引3: b,a,c
.
.
.请各位指点。这种情况主要发生在比较重要的表上,如发票,可能有客户、日期、货物、发票号、供应商,等等
如果只为每一个字段建立一个索引,即建立三个索引:
1、a 2、 b 3、c这样在order by a,b,c或其它顺序时,sql server会把三个索引综合起来使用吗?如何综合,效率如何?
看你系统的要求,是分析为主还是事务处理为主。除了order by
select 和 where 里有哪些字段呢?
如果select * from table order by a,b,c 是会用表扫描,不会用你的索引的。