복붙노트

[SQL] 임시 쿼리 동적 SQL [폐쇄] VS 프로 시저 VS

SQL

임시 쿼리 동적 SQL [폐쇄] VS 프로 시저 VS

임시 쿼리 동적 SQL 대 저장 프로 시저 대. 누구 말의 장단점 수 있습니까?

해결법

  1. ==============================

    1.저장 프로 시저

    저장 프로 시저

    동적 SQL (즉 저장 프로 시저 내에 exec 명령을 사용)

    임시 SQL (비즈니스 코드에서 만든 즉)

    참고 : 항상 임시 SQL을 매개 변수화.

    OLAP 임시 SQL의 경우 : 유일한 매개 변수화 문자열 데이터. 이 만족 두 가지 조건. 그것은 SQL 주입 공격을 방지 할 수 있습니다. 그리고 쿼리는 데이터베이스에 더 독특한 보이게한다. 예, 당신은 가난한 쿼리 계획 캐시 적중률을 얻을 수 있습니다. 하지만 그 OLAP 쿼리 것이 바람직합니다. 자신의 데이터 세트와 가장 효율적인 계획이 지정된 파라미터들 사이에서 매우 다양하기 때문에 그들은 고유 한 계획을 생성 혜택을 누릴 수 있습니다.

  2. ==============================

    2.저장 프로 시저의 장점 :

    저장 프로 시저의 장점 :

    저장 프로 시저의 단점 :

  3. ==============================

    3.이럴 저장 프로 시저가 전염병처럼 피해야한다. 여기에 당신이 그들을 (모든 데이터베이스에 적용) 사용하지 않을해야하는 이유에 대한 내 머리 위로 떨어져 열 좋은 이유는 다음과 같습니다

    이럴 저장 프로 시저가 전염병처럼 피해야한다. 여기에 당신이 그들을 (모든 데이터베이스에 적용) 사용하지 않을해야하는 이유에 대한 내 머리 위로 떨어져 열 좋은 이유는 다음과 같습니다

    아마도 키 확인하거나 데이터 형식 변환 아니면 트리거 내에서, 비슷한, 그렇게 중요한 그것의 존재를 정당화하고 아마하지 않습니다 이제까지 것을 - 매우 구체적인 데이터베이스 기능의 경우 : 내가 사용을 제재 할 만 한 곳이있다 작성 후 변경합니다.

    일반적으로, 당신은 저장 프로 시저에서 비명을 실행해야합니다!

  4. ==============================

    4.저장 프로 시저

    저장 프로 시저

    임시 동적 - 빌 Paetzke의 답변과 의견을 참조하십시오.

    또한, 이러한 목록에없는 여전히 고려되어야한다 SQL에 대한 대량 삽입 등의 패턴을 잊지 마세요.

  5. ==============================

    5.RDBMS? 이 답변은 나이가 오라클에 특정

    RDBMS? 이 답변은 나이가 오라클에 특정

    이전 Oracle 버전 <11 년, 동적 SQL은 재사용 SGA의 SQLTEXT 계획을 존재하지 않습니다, 그것은 모든 실행 계획을 파서 요구에 대한 새 항목을 작성합니다. 이 많은 동적 SQL은 SQLTEXT 영역이 쿼리 재사용 방법 아래로가는 것을 플러시 충분히 빨리를 얻을 수 호출 peformance 아래에 다음과 같습니다.

  6. ==============================

    6.하나의 또 다른 장점은 (주요 업그레이드를 위해 당신은 여전히 ​​약간의 다운 타임을 incure 수) 쉽게 "다운 타임 업그레이드"입니다.

    하나의 또 다른 장점은 (주요 업그레이드를 위해 당신은 여전히 ​​약간의 다운 타임을 incure 수) 쉽게 "다운 타임 업그레이드"입니다.

    모든 데이터 액세스 저장 프로 시저를 통해 수행되는 경우, 당신은 쉽게 v1을 가질 수 있으며, 저장 프로 시저의 V2는 나란히 앉아있다.

    지금 당신은 V1에서 각각의 저장 프로 시저의 자신의 버전을 호출이 나란히 v2를 바이너리 / 응용 프로그램 논리를 할 수 있습니다.

    아니오 다운 시간 DB 변경 배포 읽기 전용 모드로 V1 앱 (적용 가능한 경우), (2)을 잠그는 (1)를 통해 달성된다. 3, 옆에 v2를 응용 측을 배포 V1 응용 프로그램, 4,에 일반 액세스를 다시 활성화, 새로운 바이너리를 사용하여 새로운 사용자를 말한다. 더 이상 사용자가 기존 바이너리를 사용하지 않는 경우 6. 기존 바이너리를 종료합니다.

  7. from https://stackoverflow.com/questions/2934634/ad-hoc-queries-vs-stored-procedures-vs-dynamic-sql by cc-by-sa and MIT license