col_1, col_2, col_3, col_4, col_n의 세 열로 된 인덱스가있는 테이블에서 SP가 실행됩니다. 콜 1은 신분입니다. 그 순서대로 col_2, col_3, col_4에 대한 색인이 있습니다.쿼리 계획에서 검색 조건 값이 null 인 경우 키 조회가 99 %로 표시됩니다.
나는
@parameter=1
SELECT col_2,col_3,col_4
WHERE [email protected]
AND col_3='2'
AND col_4=10.00
같은 그것은 내가 전에 언급하지만
@paramete =null; -- the parameter is null in this case when parameter
has value it uses the index
SELECT col_2,col_3,col_4
WHERE (@parameter is null OR col_2 = @parameter)
AND col_3='2'
AND col_4=10.00
뭔가를 조회 할 경우는 키와 쿼리 계획을 보여줍니다 인덱스를 사용하여 쿼리 할 때와 컬럼 col_1에 찾아 99 % 비용.
간혹 값이 null이고 그와 같이 유지해야합니다.
누군가 설명 할 수 있습니까? 그것을 고칠 수 있습니까?
감사합니다. 모든
정확하게이 유형의 쿼리가 항상 올바르게 작동합니다. 일반적으로 "모든 것을 포착"쿼리라고합니다. 이 유형의 쿼리에 대해 논의하고이를 해결할 수있는 우수 사례가 있습니다. https://www.simple-talk.com/sql/t-sql-programming/how-to-confuse-the-sql-server-query-optimizer/ –