我加入了A表,而表是B和C。这三个表都有相似的列和索引,B和C有大约相同的行数。但是A和B有nvarchar列的索引,而C有varchar列的索引。
单独测试,在B上加入比加入C快30-60倍.(4秒对2-4分钟)查看执行计划,B使用索引查找,而C使用索引扫描。C上的联接的详细信息提到了varchar列的隐式转换,而B上的联接没有提到这种转换。这就是为什么它使用扫描而不是查找,这可能是它速度慢的原因吗?(另一个潜在的问题:C上的索引扫描估计有1次执行,但实际执行次数约为8500次)。
C是静态的历史数据,所以我可以修改列并重建索引(如果它有帮助的话)。
https://stackoverflow.com/questions/54911563
复制相似问题