programing

보기 또는 임시 테이블 - MS SQL Server에서 사용할 테이블을 선택합니다.

elecom 2023. 8. 26. 10:28
반응형

보기 또는 임시 테이블 - MS SQL Server에서 사용할 테이블을 선택합니다.

뷰를 사용할지 임시 테이블을 사용할지 결정하는 데 문제가 있습니다.

프로그램에서 호출하는 저장 프로시저가 있습니다.SPI에서 긴 쿼리 결과를 임시 테이블에 저장하고 열 이름을 지정한 후 해당 테이블의 다른 쿼리를 실행하여 결과를 레이블이나 그리드 뷰 또는 기타로 저장하고 임시 테이블을 삭제합니다.또한 쿼리 결과를 뷰에 저장하고 해당 뷰에 대해 쿼리를 수행할 수 있습니다.따라서 무엇이 더 나은지 또는 어떤 경우에 View/Temp Table을 사용해야 합니다.

제가 조사한 바에 따르면 뷰는 보안, 단순성 및 열 이름 지정과 같은 이점이 있습니다.제 임시 테이블도 그 모든 것을 충족시켜 줍니다.

쿼리가 "길어" 있고 여러 쿼리의 결과에 액세스하는 경우 임시 테이블이 더 좋습니다.

일반적으로, 보기는 단지 짧은 시간 동안만 가능합니다.select.되는 것을 .결과가 실행 및 처리된다는 의미는 아닙니다.보기를 사용하는 경우 사용할 때마다 결과를 다시 생성해야 합니다.보기 쿼리에서 사용하는 페이지가 캐시에 있기 때문에 보기를 실행하는 것이 더 효율적일 수 있지만, 임시 테이블은 실제로 결과를 저장합니다.

변수SQL Server 서블 변수이테에(수변▁()를 .declare @t table . . .).

단일 저장 프로시저 내에서 임시 테이블(또는 테이블 변수)을 사용하는 것은 보안, 단순성 및 열 이름 측면에서 거의 의미가 없는 것으로 보입니다.보안은 저장 프로시저에 대한 액세스로 처리됩니다.두 솔루션 모두 열 이름이 필요합니다.단순성은 더 많은 정보 없이는 판단하기 어렵지만, 특별히 복잡한 것으로 눈에 띄는 것은 없습니다.

경우에 따라 다르지요

임시 테이블이 결과를 저장하는 동안 보기는 실행될 때마다 "긴 쿼리"의 처리를 복제해야 합니다.

더 많은 프로세싱 또는 더 많은 스토리지를 사용하시겠습니까?

처리에 도움이 될 수 있는 일부 보기 값(영구 인덱스)을 저장할 수 있지만 이를 실제로 탐색하기에는 충분한 정보를 제공하지 않습니다.

단일 프로시저 호출 내에 사용할 데이터를 저장하는 것에 대해 말씀하시는 경우에는 임시 테이블을 사용하는 것이 좋습니다.

임시 테이블에 대해서도 언급하고 싶습니다.

동일한 쿼리에서 TEMPORY 테이블을 두 번 이상 참조할 수 없습니다.

따라서 셀프 조인을 사용하려는 경우에는 임시 테이블이 불편합니다.

실제로 상황에 맞는 질문이며 시나리오의 요구 사항에 따라 운영 관련 질문과 답변이 달라질 수 있습니다.그러나 추가하고 싶은 작은 점은 보기를 사용하여 복잡한 쿼리의 결과를 저장하는 경우, 그리드 보기 작업에 사용되는 경우 복잡한 보기에 대한 업데이트 작업을 수행하는 것이 어려울 수 있습니다.반대로, 온도 테이블은 이것으로 완벽하게 충분할 수 있습니다.

[여러 데이터베이스 서버에서 적절하게 처리되지 않을 경우] 보기가 더 나은 선택일 수 있는 시나리오가 있지만, 이는 사용자가 수행할 작업에 따라 다릅니다.

일반적으로 저장 프로시저 내에서 동일한 테이블을 여러 번 참조하려는 경우에는 임시 테이블을 사용하고 다른 저장 프로시저에서 테이블을 사용하려는 경우에는 뷰를 사용합니다.

뷰는 데이터를 유지하지 않습니다(원칙적으로). 뷰를 참조할 때마다 SQL은 뷰의 논리를 사용하여 원래 테이블에 액세스합니다.따라서 뷰에 뷰를 작성하거나 복잡한 논리를 가진 뷰에 대한 다중 참조를 사용하지 않을 수 있습니다.

임시 테이블은 현재 세션 내에서만 볼 수 있으며 세션이 닫힐 때 자동으로 삭제됩니다.복잡한 쿼리의 동일한 결과를 반복적으로 얻어야 하는 경우 TEMPORY 테이블이 중간 결과를 저장하여 성능을 향상시킬 수 있습니다.

보기는 세션 간에 유지됩니다.후드 아래에 있는 쿼리와 마찬가지로 보기에 액세스할 때마다 SQL 서버는 기본 테이블의 결과를 재생성합니다.VIEW는 이러한 의미에서 더 느리지만, VIEW는 얻은 결과가 최신인지 확인합니다.

언급URL : https://stackoverflow.com/questions/16897323/view-or-temporary-table-which-to-use-in-ms-sql-server

반응형