关于SQL2005聚集索引排序问题

最近由于公司网站数据库有张表的数据量急剧增大,搜索速度随之下降,前几天甚至一直超时。

 

以前的程序员全部是写的like  模糊查询数据库,以前数据量很小,所以也一直没人关心这其中的隐患,前天老板指示要优化,而且不能改变现在网站的功能,很头疼,有点难度。

 

简单的说一下,主要搜索字段是 6个 地区是4个 行业类别是2个 安全问题就不在这里透露具体字段名称。

 

有其它三个字段是 固顶,置顶功能的排序 ,以前那哥们用order BY 这三个字段排序,那速度是可想而知的,这其中还有个时间数据类型的字段。 于是我拿这三个字段做了一个聚集索引 三个字段的顺序就是排序的顺序,其它六个字段 按顺序组成了一个 非聚集索引  去掉了order by,做完之后查询速度提了上来,基本都在2秒之内,但新的问题产生了,当 搜索全部数据式 比如 select top(20)*from XXX  排序正常,但只要在后面加上条件(条件字段是那六个字段中的) 排序就被打乱,而且每次查询 排序都不一样,困扰了很久。

 

最终的解决办法:把那六个字段分别做了一个非聚集索引,删除了刚开始做那个六个字段的组合非聚集索引,一切正常,速度没有影响。我不是数据库专员,对数据库理解不深,目前还没看出来多索引多插入,更改数据产生的影响,但还是不免得担心,我也说不上来为什么这么做会排序正常,难道非聚集索引会影响聚集索引的排序? 至今还不理解,如果有高手知道答案还希望能指点一下,不胜感激。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值