日期:2014-05-18  浏览次数:20428 次

【100分】技术难点,多条件查询用不到独立索引吗?独立索引这么废吗??
如题,
系统中订单表数据量比较大,有数千万条
加任意一个索引,存储空间的开销都很大,
所以之前他们都是加的组合索引。

而实际业务上,查找的时候,
查询条件是由用户输入的,
大多数时候用户只输入很少的条件,
而且基本是随意的,
没有规律,
导致很多索引用不上,
经常会超时。

而我建议把组合索引改成独立索引,
他们不同意,
说独立索引在组合查询的时候用不到,
搞得我很晕。。。。。

大家给个意见吧



------解决方案--------------------
独立索引在某些情况 是可以的。可以索引联接拿出结果。
2K5以上可以用INCLUDE包含索引
------解决方案--------------------
随意的话这就不好了。可以限定一些条件来查询。以及笔数的限制。
------解决方案--------------------
组合索引需要SQL语句的条件按组合顺序来写,独立索引在组合查询里查不到?这个怎么说,估计你们的沟通有点问题,他们是否理解为组合索引存在的情况下再做一些独立索引。。。
------解决方案--------------------
你把查询计划贴给他们看一下就能说明问题了

谁说的独立索引用不了的?

include还与字段顺序有关系的
------解决方案--------------------
对于组合查询,组合索引性能无疑是高于独立索引的。

如果你想要满足各种组合查询,那么就得建各种组合索引,付出的代价是磁盘空间增加,得到的是性能质的提升。

不存在担心空间不足又想提升性能的方案。
------解决方案--------------------
探讨
引用:

独立索引在某些情况 是可以的。可以索引联接拿出结果。
2K5以上可以用INCLUDE包含索引

“某些情况 是可以的”。。。。
你的意思是,如果所有相关字段都是加的独立索引,
在组合查询的时候,这些索引真的起不了作用?????
是完全起不了作用,还是不能完全起作用????

------解决方案--------------------
有些公司专门用SSD硬盘来存放索引的。
还有,你可以增大内存到256GB+来提升性能。
------解决方案--------------------
sql server 2008 是支持索引压缩的,我不知道你的是什么版本,还有你上KW的数据表是多少GB,以及你run在一个什么样硬件配置的服务器上?
------解决方案--------------------
或许你应该做一个统计,监控一天,把各种组合都记录下来,这样生成一个组合次数排名,排在前面的组合查询,你需要想办法去加索引,后面的我想也许可以舍弃了。