复合索引问题请教!!!!

[复制链接]
查看11 | 回复5 | 2011-11-1 16:21:15 | 显示全部楼层 |阅读模式
一个表采用复合主键,建立聚集主键聚集索引,如表A primary key (id1,id2), 如果在查询条件中涉及到id1,id2,sql会用到到聚集索引,单独用id1的话也可以,但如果是select * from A where Id2=''则只会走聚集索引的INDEX SCAN,即使单独建立一个ID2的非聚集索引也不会被用到,该如何用到索引呢?
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
怎么没高手帮忙解决一下啊,是不是聚集索引中用到过的列就不能再单独建立非聚集索引了?
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
"聚集索引中用到过的列就不能再单独建立非聚集索引"那是谣传
自己再动手建一个ID2的索引
如果ID2的可选择性不高,则建索引也无多大用处,如果高,则ID1是否高?
仔细看下数据分布特点,再综合设计
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
是可以手建ID2的索引,但前提是复合所以中已经包含了ID2,再单独以ID2为查询条件时就根本不走ID2的单独索引了,只是在走复合索引的INDEX SCAN,而不是ID2的INDEX SEEK了
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
我也有同样的问题,同求~~
[ 本帖最后由 frankieyo 于 2009-9-15 23:31 编辑 ]
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
可以用WITH(INDEX())强制使用单一索引, 但效果不如用符合索引的INDEX SCAN, 不知道这里面是怎么个算法!!!!
这里好冷清啊!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行