2012-11-12 1 views
1

내 응용 프로그램에서 5-6 개 이상의 테이블에 여러 조인을 사용하여 많은 행 선택 쿼리가 있습니다. 이러한 쿼리는 String Builders를 사용하여 양식 등에서 입력 한 여러 조건을 기반으로 생성됩니다. 그러나 SQL 개발자가 된 필자 팀원은 단 한 줄의 쿼리를 저장 프로 시저로 변환하도록 요청했습니다.문자열 작성기 또는 저장 프로 시저를 사용하여 한 줄 선택

단일 행 선택 쿼리를 백엔드로 변환하고 모든 if와 else SP를 수행하면 어떤 이점이 있습니까?

+0

"여러 조건을 기반으로"쿼리를 생성합니다. 저장 프로 시저의 데이터베이스에서 이러한 조건을 테스트하는 것이 얼마나 어려울까요? –

+0

@HansKesting 잘 조용한 힘든. 여러 SQL 문에 대해 5-32t 테이블 –

답변

0

많은 개인적인 의견을 바탕으로 많은 답변을 얻는 것이 두렵습니다.

어쨌든 여기에서 이야기하는 비즈니스 논리, 응용 프로그램 계층에 속한 의견. 그러나 전적으로 오라클 개발팀을 알고 있으며 전적으로 동의하지 않습니다.

2

저장 프로 시저에서 모든 SQL 부분을 사용하면 데이터베이스 한 곳에서 쿼리를 유지할 수 있으므로 응용 프로그램 계층이나 프런트 엔드 계층에서 많은 변경 작업을 수행하지 않고도 변경이나 수정이 훨씬 쉬워집니다 .

데이터베이스 프로 시저에 저장되어있는 경우 DBA 또는 SQL 개발자가 SQL을 미세 조정할 수 있습니다. 모든 기능/저장 프로 시저를 성능 및 패키지 구성 측면에서 더 나은 패키지로 유지할 수 있습니다 (Java로 패키지를 만드는 것과 비슷한 방식). 물론 패키지에서 객체에 대한 직접 액세스를 제한 할 수 있습니다.

이것은 프론트 엔드에서든 데이터베이스 자체에서든 SQL 부분을 유지하고 물론 @Gimby와 같이 많은 부분에서 다른 관점을 가질 수있는 팀 또는 부서 정책에 가깝습니다.

업데이트 1

당신이 뭔가이 함수를 사용하여 반환하는 SELECT 문이있는 경우 만약 당신이 INSERT/UPDATE/DELETE 또는 보내는 이메일이나 다른 비즈니스 규칙과 같은 유사한 물건은 다음 절차를 사용하여 이러한 전화 프런트 엔드에서 매개 변수를 전달합니다.

+0

에 걸친 긴 select 문의 경우 성능이 향상됩니다. 단 한 줄의 쿼리만으로는 의미가 있습니다. Splly : 사용자가 양식에서 값 A 또는 B를 입력했는지 확인한 다음 쿼리에 적절하게 참여해야하는지 여부를 확인해야합니다. –

+0

@AkhilKNambiar IMHO 프런트 엔드에서 함수/프로 시저 및 호출을 사용합니다. 아마도 미래에 누군가 수정하고 싶다면 애플리케이션 코드를 건드리지 않고 기능이나 절차를 수정할 수 있습니다. – user75ponic

0

Java에서 PreparedStatement를 사용하는 경우 Java 쿼리와 저장 프로 시저 간의 성능에는 큰 차이가 없습니다. (java에서 use 문을 사용하면 문제가 발생합니다.)

그러나 저장 프로시 저는 SQL 코드를 구성하고 재사용하는 좋은 방법입니다. 패키지로 묶을 수 있습니다. 자바 컴파일없이 DBA를 변경할 수 있으며 DBA 또는 SQL 전문가가 조정할 수 있습니다.

관련 문제