SQLSERVER分表流程

分表流程

創建文件組-》創建數據文件到文件組-》使用嚮導創建分區表(sql server 客戶端跟着嚮導往下做就行)

分表語法

摘自:https://www.cnblogs.com/knowledgesea/p/3696912.html

--創建文件組:
alter database <數據庫名> add filegroup <文件組名>
alter database test add filegroup UserLoginInfoGroup
--創建數據文件到文件組裏面:
alter database <數據庫名稱> add file <數據標識> to filegroup <文件組名稱>
alter database test add file (name='UserLoginInfo3',filename='C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\UserLoginInfo3.mdf',SIZE=5MB,FILEGROWTH=5MB) to filegroup UserLoginInfoGroup
--創建分區函數:
create partition function 分區函數名(<分區列類型>) as range [left/right] 
for values (每個分區的邊界值,....) 
create PARTITION function UserLoginInfoPartitionFunction(int)
as range right for values(4000000,8000000)
--刪除分區函數:
drop partition function <分區函數名>
--創建分區方案:
create partition scheme <分區方案名稱> as partition <分區函數名稱> [all]to (文件組名稱,....) 
create partition scheme UserLoginInfoPartitionScheme as  partition UserLoginInfoPartitionFunction to (id,UserLoginInfo1,UserLoginInfo3,UserLoginInfo3)
--刪除分區方案:
drop partition scheme<分區方案名稱>
--創建分區表語法
create table <表名> (<列定義>)on<分區方案名>(分區列名)
create table BigOrder (
   OrderId              int                  identity,
   orderNum             varchar(30)          not null,
   OrderStatus          int                  not null default 0,
   OrderPayStatus       int                  not null default 0,
   UserId               varchar(40)          not null,
   CreateDate           datetime             null default getdate(),
   Mark                 nvarchar(300)        null
)on bgPartitionSchema(OrderId)
--創建分區索引語法
create <索引分類> index <索引名稱> 
on <表名>(列名)
on <分區方案名>(分區依據列名)
--創建分區索引
CREATE CLUSTERED INDEX [ClusteredIndex_on_bgPartitionSchema_635342971076448165] ON [dbo].[BigOrder] 
(
    [OrderId]
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [bgPartitionSchema]([OrderId])
--查詢分區依據列爲10000014的數據在哪個分區上
select $partition.bgPartitionFun(2000000)  --返回值是2,表示此值存在第2個分區
--查看分區表中,每個非空分區存在的行數
select $partition.bgPartitionFun(orderid) as partitionNum,count(*) as recordCount
from bigorder
group by  $partition.bgPartitionFun(orderid)
---查看指定分區中的數據記錄
select * from bigorder where $partition.bgPartitionFun(orderid)=2
--分區拆分
alter partition function bgPartitionFun()
split range(N'1500000')  --將第二個分區拆爲2個分區
--合併分區
alter partition function bgPartitionFun()
merge range(N'1500000')  --將第二第三分區合併
--創建表
create table <表名> (
  <列定義>
)on <文件組名>
--將bigorder分區表中的第一分區數據複製到普通表中
alter table bigorder switch partition 1 to <普通表名>
--將普通表中的數據複製到bigorder分區表中的第一分區
alter table <普通表名> switch to bigorder partition 1 

未完,待整理…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章