2017-09-07 8 views
0

SQL # 1 :
SELECT SLIB_DIFF (COLA, COLB, 'MM/DD/YY') FROM T101 WHERE OBJ_ID =?준비된 SQL에 인용 된 텍스트가있는 경우 - 명령문을 다시 컴파일해야합니까?

SQL # 2 :
SELECT SLIB_DIFF (COLA, COLB ,?) FROM T101 WHERE OBJ_ID =?

SLIB_DIFF 사용자 정의 함수는 마지막 매개 변수를 인용 된 날짜 형식으로 사용하며 변경되지 않습니다.
이 텍스트를 바운드 매개 변수로 만드는 것이 맞습니까?
쿼리에서 유일한 변경 사항은 OBJ_ID입니다.
데이터베이스 서버는 모든 실행시에 이것을 다시 컴파일합니까 (인용 된 텍스트를 보았 기 때문에)?

간단히 말해서, 쿼리 # 2는 쿼리 # 1보다 빠릅니까?

답변

0

쿼리에서 문자열 리터럴을 사용하면 다시 컴파일 또는 성능에 전혀 영향을주지 않는 이유가 없습니다.

MS SQL을 사용하는 것이 맞다면 몇 번 실행 한 후 쿼리에 sys.dm_exec_query_statsexecution_count을보고 직접 확인할 수 있습니다. 다른 DBMS도 비슷한 기능을합니다.