SQL Server PARTITION FUNCTION(分區)


分區並不影響Linq,sql查詢
在MSSQL中,選中目標表,右鍵-存儲-創建分區
根據提示完成分區,存儲成sql
這里展示如何根據Id的數據范圍分區
在執行前,可能需要設置日志文件大小為“無限制”,否則執行過程中可能出現事務日志已滿,原因為“LOG_BACKUP”的報錯

--其實就是寫個生成字符串列表(數據范圍)的函數
--這里將數據以500000為一組分區,一直分到50000000條,50000000之后的數據則在一個區內   
DECLARE @fenqu nvarchar(max) = 
N'CREATE PARTITION FUNCTION [fenqu](bigint) AS RANGE RIGHT FOR VALUES (';  
DECLARE @i int=0;  
WHILE @i < 50000000  
BEGIN  
SET @fenqu += '''' + convert(varchar,@i) + '''' + N', ';  
SET @i = @i+500000;  
END  
SET @fenqu += '''' + convert(varchar,@i)+ '''' + N'); ';  
EXEC sp_executesql @fenqu;  

--數量和上面分區的數量對應
CREATE PARTITION SCHEME [fenqufangan] AS PARTITION [fenqu] TO (
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], 
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY],[PRIMARY])

分區完成后,日志文件、數據文件可能會很大,可以收縮一下

資料

CREATE PARTITION FUNCTION (Transact-SQL)
官方資料展示了根據數量、根據時間段分區的示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM