一个奇怪的问题
今天在做一个统计功能时,写了一个存储过程,该存储过程就是接受两个日期型参数,返回一个统计后的数据集,在存储过程中使用了两个表的联合查询,写完后,用exec运行了下,速度很慢,经过调查后,我把其中一个表中的GUID列加了一个聚集索引,然后针对这个表重建了下索引,然后再用exec跑了下该存储过程,结果快多了,一秒钟即可,以前的话需要17秒,后来我发现逻辑不对,就又在where子句后加了一个条件,然后再用exec跑了下该存储过程,结果又需要17秒钟了,然后我就又针对该表重建了下索引(使用DBCC),然后再用exec跑了下该存储过程,结果1秒钟就出来了,然后我又改了下where子句,结果跑一次又需要17秒钟了,然后重建索引又好了
现在就是感觉只要动一下那个存储过程的where子句,哪怕是在后面加一个 " and 1=1",然后跑起来就N慢,需要17秒,必须得重建索引才行,索引重建后跑一次只需要1秒
请问哪位有数据库优化经验的高手能给个说法这是为什么吗,给个参考也行 谢谢