日期:2014-05-16  浏览次数:20388 次

请教 mssql 数据表 如何合理创建索引,是分开建还是合在一起建,见下面条件
我有一个数据表,
自增id常用,我使用了主键,
还有a-z各类型的一堆字段,
如果经常使用a、b、c、d做查询条件,用e、f、g做排序条件
该怎么建立索引呢,
是a/b/c/d/e/f/g各建一个索引,
还是a/b/c/d各建一个索引,e/f/g合建在一个索引上
还是a/b/c/d/e/f/g都合建在一个索引上呢,

他们各自有什么区别,性能上有什么影响?
大侠们,不考虑小数据,视为单表数据在1w以上。

还有,如果数据库有100个表,在每个表的查询字段和排序字段上都建立索引会降低数据库性能吗???
请各位大侠赐教,望普及我等小白,奉上100分。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

如果是这种:

where a = xx 
where b = yy
。。。

那么最好是给a,b,c,d每个字段,分别建立索引。

如果是:where a=xx and b=yy and c = zz
那么可以建立一个索引:create index idx_xxx on 表(a,b,c,d)


既有单独的,也有组合的,组合的多一些,
既有a=x and b=y and c=z
也有b=y and d=m 这样不同字段的组合查询,要给同一个字段建立多个索引吗


这样就得建立多个索引了,比如(a,b,c) ,还有(b,d),建立2个索引

那像 where a=x and b=y and c=z order by f,g,h这样的
排序字段是单独建立索引还是和条件字段一起组合建立索引呢


可以建立索引:

(a,b,c,f,g,h)
------解决方案--------------------
如果你不知道怎么建,可以把所有索引去掉(可以先保留索引的定义),然后在查询界面右键→【在数据库引擎优化顾问中xxx】那个,然后直接点开始分析,应该会有一些建议,不过仅供参考