SQL 서버에서 $PARTITION
을 사용하는 목적을 분명히 이해하지 못합니까? MSDN에서 내용을 읽었지만 여전히 이해할 수는 없습니다.
어떤 이점이 있습니까?
SQL 서버에서 $PARTITION
을 사용하는 목적을 분명히 이해하지 못합니까? MSDN에서 내용을 읽었지만 여전히 이해할 수는 없습니다.
어떤 이점이 있습니까?
파티션 테이블은 여전히 하나의 테이블처럼 치료하는 동안 여러 조각으로 분할을 의미합니다. 우리는 여기에서 수평 분할에 대해 말하고 있습니다. 즉, 각 분할 영역에는 모든 열이 포함되지만 일부 열만 포함됩니다. 이를 수행하려면 파티션 컬럼에서 해당 행의 값에 따라 행이 속하는 파티션을 정의하는 파티션 함수를 정의해야합니다. $PARTITION
은 행이 속한 파티션을 알려줍니다.
행의 등급을 나타내는 정수 열이 있고 사용자가 종종 4보다 높은 등급의 항목 만 요청할 것으로 예상한다고 가정 해 보겠습니다. 등급에 따라 파티션 할 수 있습니다.
다음CREATE PARTITION FUNCTION partitionByRating (int) FOR VALUES (4);
는 우리 테이블의 행, 우리는 쿼리 수에 속하는 파티션을 찾을 : 우리의 파티션 기능이 될 수
SELECT $partition.partitionByRating(i.Rating) AS [Partition Number],
rating AS [Rating],
name AS [Item Name]
FROM dbo.Items AS i
을 그리고 우리는 같은 결과를 얻을 수 있습니다 :
을Partition Rating Item Name
1 1 Ball
1 4 Scooter
2 5 Blaster
볼과 스쿠터가 함께 저장되지만, 파티션을 스토리지에 할당하는 방법에 따라 Blaster가 다른 곳에 저장 될 수 있습니다.
이 기능을 사용하여 특정 값에 사용될 파티션 번호를 결정할 수 있습니다.
SELECT $PARTITION.PF_RangeByYear('20010701')
당신은 또한 찾을하는 데 사용할 수 있습니다 : 예를 들어, 날짜별로 분할 된 테이블과, 이것은 당신이 테이블에 값을 삽입하기도 전에 7 월 1 일, 2001 사용되는 파티션을 알려줍니다 각 파티션 번호 행 수 : 틀림없이 당신이 sys.partitions
또는 sys.dm_db_partition_stats
에서 훨씬 더 간단 할 수
SELECT $partition.PF_RangeByYear(orderdate) AS partition#,
COUNT(*) AS cnt
FROM Orders
GROUP BY $partition.PF_RangeByYear(orderdate);
. 데이터베이스에
(Itzik's SQL Mag article here에서 가져온 이러한 예는 모두.)
파티션 된 테이블과 관련된'$ PARTITION' 함수 (http://msdn.microsoft.com/en-us/library/ms188071.aspx)에 대한 질문이 정확합니까? 분할 된 결과 집합과 관련된 Transact-SQL의 'PARTITION BY' 절 (http://msdn.microsoft.com/en-us/library/ms176102)에 대해 묻지 않습니다. –