快和慢的case中,输入参数完全一样吗?
1. 如果不一样, 则可能是parameter sniffing. 采取方案有(1)recompile (2)optimizer for variant hint (3) plan guide (4)dynamic SQL
... 等等。他们各有优劣,要依具体场景来决定。
2.如果完全一样,(1)检查连接options (2)对比二者执行计划,确认二者一致,尤其是implicit data type conversion. 例如,在某些java连接库默认以unicode传递参数,导致隐式转换,进而无法使用索引。(3)检查应用逻辑。例如某些应用在取到数据,然后loop datareader做某些处理,如果结果集大或处理复杂,自然总体处理时间变长。