當前位置:首頁 » 編程語言 » SQL創建表格日分區是什麼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

SQL創建表格日分區是什麼

發布時間: 2023-07-10 06:37:55

資料庫表分區優化

sql Server數據表進行分區的過程分為三個步驟:

1)建立分區函數

2)建立分區方案

3)對表格進行分區

第一個步驟:建立分區函數

分區函數定義[u]how[/u],即你想要SQL Server如何對數據進行分區。這里就不以某一個表格作為例子,而是總體概括分割數據的技術。

分區是通過指定每個分區的分割界線實現的。例如,假定我們有一個Customers表格,裡麵包含了企業所有的客戶的信息,客戶信息以唯一的客戶號進行辨識,客戶號從1到1000000。我們可以運用以下的分區函數(這里稱之為customer_Partfunc)把這個表格平均分為四個分區:

CREATE PARTITION FUNCTION customer_partfunc (int)
AS RANGE RIGHT
FOR VALUES (250000, 500000, 750000)

這些分割界線指定了四個分區。第一個分區包含所有值小於250000的記錄。第二個分區包含所有值在250000和499999之間的記錄。而第三個分區包含所有值在500000和749999之間的記錄。其他所有大於或等於750000的記錄都包含在第四個分區里。

注意這個例子中使用了「RANGE RIGHT」從句。這說明分界值是在分區的右邊。同樣,如果使用的是「RANGE LEFT」從句,那麼第一個分區就會包含所有值小於或等於250000的記錄;第二個分區就會包含所有值在250001和500000之間的記錄,如此類推。

第二個步驟:建立分區方案

一旦建立完定義如何對數據進行分區的分區函數之後,下一步就是建立一個分區方案,定義[u]where[/u],即你想在哪裡對數據進行分區。這是一個很直接明了的過程,例如,如果我有四個文件組,名稱分別從「fg1」到「fg4」,那麼就可以使用以下分區方案:

CREATE PARTITION SCHEME customer_partscheme
AS PARTITION customer_partfunc
TO (fg1, fg2, fg3, fg4)

注意我們現在把一個分區函數連接到了分區方案,但是我們還沒有把分區方案連接到任何具體的資料庫表格。這就是重復使用功能發揮功能的時候。我們可以通過這個功能把分區方案(或者只是分區函數)用於資料庫表格的任何數據上。

第三個步驟:對表格進行分區

建立好分區方案之後,就可以開始對表格進行分區了。這是最簡單的一個步驟,只需要在表格創建語句中添加「ON」從句,指定表格分區方案和要應用該分區方案的表列。你不需要指定分區函數,因為分區方案已經定義了分區函數。

舉個例子,假設你想要用上述的分區方案來創建一個客戶表格,你需要使用以下Transact-SQL語句:

CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int)
ON customer_partscheme (CustomerNumber)

⑵ SQL 2005 如何按月把表分區

創建分碧缺區遲慧悔函數
按月區分的例子 (目前只有前3季度)

CREATE PARTITION FUNCTION sale_date_part_func(DATETIME)
AS RANGE RIGHT FOR VALUES(
CONVERT(DATETIME, '2010-01-01 00:00:00', 120),
CONVERT(DATETIME, '2010-02-01 00:00:00', 120),
CONVERT(DATETIME, '2010-03-01 00:00:00'碼正, 120),
CONVERT(DATETIME, '2010-04-01 00:00:00', 120),
CONVERT(DATETIME, '2010-05-01 00:00:00', 120),
CONVERT(DATETIME, '2010-06-01 00:00:00', 120),
CONVERT(DATETIME, '2010-07-01 00:00:00', 120),
CONVERT(DATETIME, '2010-08-01 00:00:00', 120),
CONVERT(DATETIME, '2010-09-01 00:00:00', 120)
);
go

創建分區架構(Schema)
CREATE PARTITION SCHEME sale_date_part_sche
AS PARTITION sale_date_part_func
TO (
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY]
);
go

創建分區表
CREATE TABLE sale_data (
sale_date DATETIME NOT NULL ,
sale_item VARCHAR(2) NOT NULL ,
sale_money DECIMAL(10,2) NOT NULL
) ON sale_date_part_sche(sale_date);
go

⑶ 如何創建SQL Server 2005表分區

創建一個分區表首先要定義你用來映射表內分區的分區函數。在下面定義的分區函數中,我將使用三個分區,每個分區對應於SalesHistoryArchive表中的每一種產品類型,這個表將在稍後定義。基本上,這些分區會把SalesHistoryArchive檔案表劃分成三個不同的表,它們由SQL Server自動維護。CREATE PARTITION FUNCTION [pf_Proct_Partition](VARCHAR(10)) AS RANGE LEFTFOR VALUES (N'BigScreen', N'Computer', N'PoolTable')定義函數的范圍決定分區值屬於哪一個邊界。RNAGE LEFT:指定分區值將小於或等於在分區函數中定義的值。在上面使用的分區函數中一共建立了四個分區。所有名稱小於或等於『BigScreen』的產品將映射到第一個分區。任何名稱大於『BigScreen』但小於或等於『Computer』的產品將映射到第二個分區;諸如此類。RANGE RIGHT:指定分區值將小於在分區函數中定義的值。在上面使用的分區函數中一共建立了四個分區。所有名稱小於『BigScreen』的產品將映射到第一個分區。任何名稱大於或等於『BigScreen』但小於或等於『Computer』的產品將映射到第二個分區;諸如此類。建好分區函數後,現在我需要建立分區方案。我將把例子中的所有分區都映射到主文件組中。如果我希望將分區映射到不同的文件組,我會按文件組列表的順序加入文件組名稱。下面是創建分區方案的代碼:CREATE PARTITION SCHEME [ps_Proct_Scheme] AS PARTITION[pf_Proct_Partition]ALL TO ([PRIMARY])現在我建立需要分區的表,我可以創建SalesHistoryArchive表並在其中載入數據。在CREATE TABLE語句末尾,分區方案使用表中的一個欄位名告訴SQL Server如何映射需要分區的表中的數據。查看列表A中的代碼樣本。我需要對數據進行一些查詢,保證分區正常運行。下面的查詢返回SalesHistoryArchive表的所有行,並使用$partition函數指出返回的行屬於哪個分區:SELECT $partition.[pf_Proct_Partition](Proct), *FROM SalesHistoryArchive這個查詢返回所有映射到SalesHistoryArchive表中的分區:SELECT * From sys.partitionsWHERE OBJECT_NAME(object_id) = 'SalesHistoryArchive'接下來…在後面的文章中,我將解釋如何修改表中的這些分區,從而在其中增加新數據,並非常高效地刪除舊數據。

⑷ sql server怎麼建立分區表

打開MsSQL2008,找到作業該項,如果打不開或者SQL Server代理是未啟動狀態,請先在windows服務中啟動SQL Server代理(參考圖片),

2
右擊MsSQL2008對象資源管理器中的作業,選擇新建作業,輸入該作業你想用的名稱,類別不用管,說明裡面是輸入一些該作業完成的功能,可不寫,請務必勾選已啟用復選框.

3
點擊新建作業窗體左側的步驟項,點擊右側區域下方的新建按鈕,輸入步驟名稱,類型請選擇Transact-SQL腳本(T-SQL),運行身份默認,資料庫請選擇要進行分區的資料庫,請不要選擇master默認的,命令文本框中輸入如下代碼:

/*--------------------創建資料庫的文件組和物理文件------------------------*/
declare @tableName varchar(50), @fileGroupName varchar(50), @ndfName varchar(50), @newNameStr varchar(50), @fullPath

varchar(50), @newDay varchar(50), @oldDay datetime, @partFunName varchar(50), @schemeName varchar(50)

set @tableName='要分區的資料庫名稱'
set @newDay=CONVERT(varchar(100), GETDATE(), 23)--23:按天 114:按時間
set @oldDay=cast(CONVERT(varchar(10),dateadd(day,-1,getdate()), 120 ) as datetime)
set @newNameStr=Replace(Replace(@newDay,':','_'),'-','_')
set @fileGroupName=N'G'+@newNameStr
set @ndfName=N'F'+@newNameStr+''
set @fullPath=N'E:\\SQLDataBase\\UserData\\'+@ndfName+'.ndf'
set @partFunName=N'pf_Time'
set @schemeName=N'ps_Time'

--創建文件組
if exists(select * from sys.filegroups where name=@fileGroupName)
begin
print '文件組存在,不需添加'
end
else
begin
exec('ALTER DATABASE '+@tableName+' ADD FILEGROUP ['+@fileGroupName+']')
print '新增文件組'
if exists(select * from sys.partition_schemes where name =@schemeName)
begin
exec('alter partition scheme '+@schemeName+' next used ['+@fileGroupName+']')
print '修改分區方案'
end
if exists(select * from sys.partition_range_values where function_id=(select function_id from

sys.partition_functions where name =@partFunName) and value=@oldDay)
begin
exec('alter partition function '+@partFunName+'() split range('''+@newDay+''')')
print '修改分區函數'
end
end

--創建NDF文件
if exists(select * from sys.database_files where [state]=0 and (name=@ndfName or physical_name=@fullPath))
begin
print 'ndf文件存在,不需添加'
end
else
begin
exec('ALTER DATABASE '+@tableName+'ADD FILE (NAME ='+@ndfName+',

FILENAME = '''+@fullPath+''')TO FILEGROUP ['+@fileGroupName+']')
print '新創建ndf文件'
end
/*--------------------以上創建資料庫的文件組和物理文件------------------------*/

--分區函數
if exists(select * from sys.partition_functions where name =@partFunName)
begin
print '此處修改需要在修改分區函數之前執行'
end
else
begin
exec('CREATE PARTITION FUNCTION '+@partFunName+'(DateTime)AS RANGE RIGHTFOR VALUES ('''+@newDay

+''')')
print '新創建分區函數'
end

--分區方案
if exists(select * from sys.partition_schemes where name =@schemeName)
begin
print '此處修改需要在修改分區方案之前執行'
end
else
begin
exec('CREATE PARTITION SCHEME '+@schemeName+' AS PARTITION '+@partFunName+' TO

(''PRIMARY'','''+@fileGroupName+''')')
print '新創建分區方案'
end

print '---------------以下是變數定義值顯示---------------------'
print '當前資料庫:'+@tableName
print '當前日期:'+@newDay+'(用作隨機生成的各種名稱和分區界限)'
print '合法命名方式:'+@newNameStr
print '文件組名稱:'+@fileGroupName
print 'ndf物理文件名稱:'+@ndfName
print '物理文件完整路徑:'+@fullPath
print '分區函數:'+@partFunName
print '分區方案:'+@schemeName

/*
--查看創建的分區函數
select * from sys.partition_functions
--查看分區函數的臨界值
select * from sys.partition_range_values
--查詢分區方案
select * from sys.partition_schemes
--查詢表數據在哪個分區中存儲,where條件查詢第一個分區中存在的數據
select *,$partition.pf_SaveTime(分區欄位) as Patition from 表名 where $partition.pf_SaveTime(分區欄位)=1
*/
GO
點擊確定按鈕

上述代碼中的變數名稱,路徑等均可自行修改,上述是按天為單位,以G開頭的日期作為文件組名稱,以F開頭的日期作為物理分區文件名即ndf文件名稱

4
選擇新建分區左側的計劃項,然後點擊右側區域下方的新建按鈕,設定新建分區的時間間隔,圖中設置的是每天創建一個新的分區,用戶也可以自行修改,按月,按周,按自定義時間等
其他的條目,通知,警報,目標可自行設置,也可不設置,至此自動創建分區的計劃任務已成功設置.

END
步驟二:對表應用分區方案和分區函數
右擊要分區的表,選擇存儲菜單下的創建分區,上述步驟一中創建的分區函數是按datetime類型進行的分區,所以創建分區的時候需要選擇相應類型的欄位作為分區依據,用戶也可以根據int型或其他類型的欄位進行分區,選擇下一步,使用現有分區函數下一步使用現有分區方案,下一步會自動按照分區方案執行的日期進行分區,繼續點擊下一步選擇立即執行,完成後即可完成的整體的表分區自動執行.

需注意:剛設置完第一步的計劃任務,可能不會執行第一步的分區方案的代碼,也就意味著沒有創建分區函數和分區方案,第二步設置的時候使用現有分區函數和使用現有分區方案也就不可用,可先把第一步的代碼執行一遍即可.

⑸ 如何對已經存在的數據表進行分區

過程中為SQL Server數據表劃分為三個步驟:

1)建立分區函數

2)建立分區方案

3)對表的分區

第一步:建立分區函數

分區函數定義[U]如何[/ U],也就是你想怎麼SQL Server數據分區。這里不是一個特定的表作為一個例子,但總的技術部門總結的數據。

分區指定為每個分區用分區邊界來實現。例如,假設我們有一個客戶表,其中包含所有的企業客戶信息,客戶信息與客戶的唯一標識號,客戶編號從1到100萬。我們可以使用下面的分區功能(這里稱為customer_Partfunc)把這個表分為四個分區:

CREATE PARTITION FUNCTION customer_partfunc(INT)

AS RANGE RIGHT

輸入值( 250000,500000,750000)

這些邊界劃分指定了四個分區。第一個分區包含所有值?少於25萬的記錄。第二個分區包含所有值?之間250,000和499,999的記錄。第三個分區包含所有值?500,000至749,999記錄。大於或等於750,000的所有其他記錄都包含在第四個分區中。

請注意,此示例使用「RANGE RIGHT」條款。這表明,該邊界值是分區的右側。同樣,如果您使用「RANGE LEFT」條款,那麼第一個分區將包含所有的值小於或等於25萬條記錄;?第二個分區將包含所有的值250001和500000之間的記錄,等等??

第二步:創建

分區方案

一旦如何分區功能分區後的數據完整的定義,下一步是創建一個分區方案,定義[ U],其中[/ U],這就是你要分區的數據。這是一個非常簡單的過程,例如,如果我有四個文件組,從「FG1」到「FG4」的名字,那麼你可以使用下面的分區方案:

創建分區計劃customer_partscheme

作為間隔customer_partfunc

要(FG1,FG2,FG3,FG4)

請注意,我們現在把一個分區函數連接到分區規劃,但我們還沒有連接在分區方案的任何具體的資料庫表。這是重復使用的功能函數時。我們可以利用這個功能來分區方案(或只是一個分區函數)對資料庫表的任何數據。

第三步:表已分區

建立良好的分區方案後,就可以開始對表進行分區。這是最簡單的一步,只需加上「ON」子句中的表創建語句指定表的分區方案,並申請表列的分區方案。你不需要指定分區函數,分區方案已經因為分區函數定義。

例如,假設你想使用上述的分區方案來創建一個客戶表,您需要使用以下Transact-SQL語句:

CREATE TABLE客戶(姓數據類型為nvarchar(40),姓氏為nvarchar(40),CUSTOMERNUMBER INT)
開customer_partscheme(CUSTOMERNUMBER)

⑹ 如何用SQL創建一個表格

1、打開SQLServer,在資料庫處,右鍵資料庫,點擊新建資料庫。

2、然後,命名為LX,點擊確定,創建資料庫,如圖所示。

3、創建完,沒有看到新建資料庫的,在資料庫那右鍵,刷新。如圖所示就出來了。

4、接著,找到LX資料庫下的表,右鍵,新建表,如圖所示。

5、比如建立一個簡單的部門表,簡單部門表包含(部門編號、部門名),SQLServer
是可以用中文做列名的,但是為了能夠被他人看懂,我們一般用英文,如圖所示,

DepertNo,DepertName,我喜歡在列名前加一個fld_,個人養成的一種習慣,看自己的習慣吧。因為我們有時候轉換成英文,可能會與SQL的某些關鍵字起沖突,因此我加了個fld_。此外講一下varchar為類型,10為長度,2個長度為1個漢字。

6、表設置主鍵,每個表只能有一個主鍵,右鍵表的最左側,點擊設置主鍵,最右邊為空自動去勾,主鍵是不能為空的。一般部門號不會為空,部門名也是不會為空,所以也去掉勾,不允許為null。

7、輸入好列後,右鍵標題,然後點擊保存Table_1,如圖所示,表名前我習慣加TBL_。

8、如圖所示,為SQL語句創建表。

⑺ SQL server 表分區問題,大家幫忙看看吧,謝啦

你第一個句子應該是創建了三個分區:<='01/01/2007'、<='01/01/2008'並且>'01/01/2007'、>'01/01/2008',所以下面的名稱應該是三個就夠了(FG1,FG2,FG3)
參考:
SQL Server資料庫表分區操作過程由三個步驟組成:
1. 創建分區函數
2. 創建分區架構
3. 對表進行分區
下面將對每個步驟進行詳細介紹。
步驟一:創建一個分區函數
此分區函數用於定義你希望SQL Server如何對數據進行分區的參數值([u]how[/u])。這個操作並不涉及任何錶格,只是單純的定義了一項技術來分割數據。
我們可以通過指定每個分區的邊界條件來定義分區。例如,假定我們有一份Customers表,其中包含了關於所有客戶的信息,以一一對應的客戶編號(從1到1,000,000)來區分。我們將通過以下的分區函數把這個表分為四個大小相同的分區:
_partfunc(int)
ASRANGERIGHT
FORVALUES(250000,500000,750000)
這些邊界值定義了四個分區。第一個分區包括所有值小於250,000的數據,第二個分區包括值在250,000到49,999之間的數據。第三個分區包括值在500,000到7499,999之間的數據。所有值大於或等於750,000的數據被歸入第四個分區。
請注意,這里調用的"RANGE RIGHT"語句表明每個分區邊界值是右界。類似的,如果使用"RANGE LEFT"語句,則上述第一個分區應該包括所有值小於或等於250,000的數據,第二個分區的數據值在250,001到500,000之間,以此類推。
步驟二:創建一個分區架構
一旦給出描述如何分割數據的分區函數,接著就要創建一個分區架構,用來定義分區位置([u]where[/u])。創建過程非常直截了當,只要將分區連接到指定的文件組就行了。例如,如果有四個文件組,組名從"fg1"到"fg4",那麼以下的分區架構就能達到想要的效果:
CREATEPARTITIONSCHEMEcustomer_partscheme
ASPARTITIONcustomer_partfunc
TO(fg1,fg2,fg3,fg4)
注意,這里將一個分區函數連接到了該分區架構,但並沒有將分區架構連接到任何數據表。這就是可復用性起作用的地方了。無論有多少資料庫表,我們都可以使用該分區架構(或僅僅是分區函數)。
步驟三:對一個表進行分區
定義好一個分區架構後,就可以著手創建一個分區表了。這是整個分區操作過程中最簡單的一個步驟。只需要在表創建指令中添加一個"ON"語句,用來指定分區架構以及應用該架構的表列。因為分區架構已經識別了分區函數,所以不需要再指定分區函數了。
例如,使用以上的分區架構創建一個客戶表,可以調用以下的Transact-SQL指令:
CREATETABLEcustomers(FirstNamenvarchar(40),LastNamenvarchar(40),CustomerNumberint)
ONcustomer_partscheme(CustomerNumber)
關於SQL Server的表分區功能,你知道上述的相關知識就足夠了。記住!編寫能夠用於多個表的一般的分區函數和分區架構就能夠大大提高可復用性。