[sql] 저장 프로 시저와 뷰의 차이점은 무엇입니까?

몇 가지 점에 대해 혼란 스럽습니다.

  1. 저장 프로 시저와 뷰의 차이점은 무엇입니까?

  2. SQL Server에서 언제 저장 프로 시저를 사용하고 언제 뷰를 사용해야합니까?

  3. 뷰를 통해 매개 변수를 전달할 수있는 동적 쿼리를 작성할 수 있습니까?

  4. 어느 것이 가장 빠르며 어떤 것이 다른 것보다 빠릅니까?

  5. 뷰 또는 저장 프로 시저가 메모리를 영구적으로 할당합니까?

  6. 누군가가 뷰가 가상 테이블을 생성하고 절차가 재료 테이블을 생성한다고 말하면 무엇을 의미합니까?

더 많은 포인트가 있으면 알려주세요.



답변

뷰는 가상 테이블을 나타냅니다 . 뷰에서 여러 테이블을 조인하고 뷰를 사용하여 데이터가 단일 테이블에서 온 것처럼 데이터를 표시 할 수 있습니다.

저장 프로시 저는 매개 변수를 사용하여 데이터를 업데이트 및 삽입하거나 단일 값 또는 데이터 세트를 반환하는지 여부에 관계없이 기능을 수행합니다.

뷰 및 저장 프로 시저 만들기 -각각의 사용시기와 이유에 대한 Microsoft의 정보가 있습니다.

두 개의 테이블이 있다고 가정 해보십시오.

  • tbl_user, 열 : user_id, user_name,user_pw
  • tbl_profile, 열 : profile_id, user_id,profile_description

따라서 모든 SQL 조각에서 조인을 수행하는 대신 해당 테이블에서 많은 쿼리를 발견하면 다음과 같은 뷰를 정의합니다.

CREATE VIEW vw_user_profile
AS
  SELECT A.user_id, B.profile_description
  FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO

따라서 나중에 쿼리 profile_description를 원하면 다음과 같이하면 됩니다 user_id.

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

이 코드는 다음과 같은 저장 프로 시저에서 사용될 수 있습니다.

CREATE PROCEDURE dbo.getDesc
    @ID int
AS
BEGIN
    SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO

따라서 나중에 전화 할 수 있습니다.

dbo.getDesc 25

그리고 user_id25에 대한 설명을 얻을 것 25입니다.

분명히 더 많은 세부 사항이 있습니다. 이것은 기본 아이디어 일뿐입니다.


답변

많은 정보가 여기에 있습니다

다음은 좋은 요약입니다.

저장 프로 시저 :

  • 매개 변수를 받아들입니다
  • 더 큰 쿼리에서 빌딩 블록으로 사용할 수 없습니다
  • 여러 명령문, 루프, IF ELSE 등을 포함 할 수 있습니다.
  • 하나 또는 여러 테이블을 수정할 수 있습니다
  • INSERT, UPDATE 또는 DELETE 문의 대상으로 사용할 수 없습니다.

관점:

  • 않습니다 NOT 매개 변수를 허용
  • 더 큰 쿼리에서 빌딩 블록으로 사용할 수 있습니다
  • 하나의 SELECT 쿼리 만 포함 할 수 있습니다
  • 테이블을 수정할 수 없습니다
  • 그러나 때로는 INSERT, UPDATE 또는 DELETE 문의 대상으로 사용할 수도 있습니다.

답변

먼저 둘 다 다르다는 것을 이해해야합니다. 진술에 Stored Procedures가장 적합 INSERT-UPDATE-DELETE합니다. 반면 Views에 사용되는SELECT진술 . 둘 다 사용해야합니다.

뷰에서는 데이터를 변경할 수 없습니다. 일부 데이터베이스는 당신이 사용할 수있는 업데이트 가능한 뷰가 INSERT-UPDATE-DELETE에를 Views.


답변

SQL 뷰는 가상 테이블이며 SQL SELECT 쿼리를 기반으로합니다. 뷰는 하나 이상의 기존 데이터베이스 테이블 또는 다른 뷰를 참조합니다. 저장 프로시 저는 단일 실행 계획으로 컴파일 된 Transact-SQL 문의 그룹이지만 데이터베이스의 스냅 샷입니다.

뷰는 데이터베이스 테이블에 저장된 데이터를 간단히 보여주는 반면 저장 프로시 저는 실행할 수있는 명령문 그룹입니다.

스토어드 프로 시저가 SQL 문을 실행하는 동안 참조 된 테이블의 데이터를 표시하므로 뷰가 더 빠릅니다.

이 기사를 확인하십시오 : 보기 및 저장 프로 시저 . 정확히 당신이 찾고있는 것


답변

보기는 복잡한 것을 저장하는 간단한 방법입니다 SELECT 데이터베이스에 입니다.

단순한 SQL로 충분하지 않은 경우 저장 프로 시저가 사용됩니다. 저장 프로 시저에는 변수, 루프 및 다른 저장 프로 시저에 대한 호출이 포함됩니다. 쿼리 언어가 아닌 프로그래밍 언어입니다.

  1. 뷰는 정적입니다. 그것들을 특정 레이아웃을 가진 새로운 테이블로 생각하면 그 테이블의 데이터는 생성 한 쿼리를 사용하여 즉시 생성됩니다. 모든 SQL 테이블과 마찬가지로 WHERE, GROUP BY및로 정렬하고 필터링 할 수 있습니다 ORDER BY.

  2. 당신이하는 일에 달려 있습니다.

  3. 데이터베이스에 따라 다릅니다. 간단한 뷰는 쿼리를 실행하고 결과를 필터링합니다. 그러나 Oracle과 같은 데이터베이스는 기본적으로보기의 기본 데이터가 변경 될 때 자동으로 업데이트되는 테이블 인 “구체화 된”보기를 작성할 수 있습니다.

    구체화 된 뷰를 사용하면 뷰의 열 (특히 데이터베이스의 어디에도 존재하지 않는 계산 된 열)에 인덱스를 만들 수 있습니다.

  4. 나는 당신이 무슨 말을하는지 이해하지 못합니다.


답변

위의 의견 외에도 뷰에 대한 몇 가지 사항을 추가하고 싶습니다.

  1. 보기를 사용하여 복잡성을 숨길 수 있습니다. 5 명이 한 프로젝트에서 작업하고 있지만 그 중 한 명만이 복잡한 조인과 같은 데이터베이스에 능숙한 시나리오를 상상해보십시오. 이러한 시나리오에서 다른 팀 구성원이 단일 테이블을 조회 할 때 쉽게 조회 할 수있는보기를 작성할 수 있습니다.
  2. 뷰로 보안을 쉽게 구현할 수 있습니다. Salary , SSN number 와 같은 민감한 열을 포함 하는 Table Employee 를 가정 해 봅시다 . 이 열은 열을 볼 권한이없는 사용자에게는 보이지 않습니다. 이 경우 민감한 열 (이전에 언급 한 Salary 등)을 노출시키지 않고 Name , Age 등과 같은 권한이 필요없는 테이블에서 열을 선택하는 View를 만들 수 있습니다 . 이제 Employee 테이블을 직접 쿼리 할 수있는 권한을 제거 하고 View에 대한 읽기 권한 만 유지할 수 있습니다. 이런 식으로 뷰를 사용하여 보안을 구현할 수 있습니다.

답변

  1. VIEW는 “WHERE”-Clause를 사용할 수있는 동적 쿼리입니다.
  2. 저장 프로시 저는 미리 정의 된 결과를 반환하는 고정 데이터 선택입니다
  3. 뷰도 저장 프로시 저도 메모리를 할당하지 않습니다. 구체화 된 뷰만
  4. TABLE은 하나의 ENTITY이며,보기는 다른 ENTITIES 또는 TABLES에서 데이터를 수집 할 수 있습니다.