使用SQL Server 2008提供的表分区向导
表分區(Partition Table)是自從SQL Server 2005就開始提供的功能,解決的問題是大型表的存儲和查詢。
我們之前大致的語法是這樣的
-- =========================
-- 演示:陳希章
-- 如何創建分區函數
-- 如何創建分區架構
-- 如何創建分區表
--=========================
alter database adventureWorks add filegroup [fg1]
go
alter database adventureWorks add filegroup [fg2]
go
alter database adventureWorks add filegroup [fg3]
go
alter database adventureWorks
add file
(name='fg1',
filename='c:\fg1.ndf',
size=5mb)
to filegroup [fg1]
go
alter database adventureWorks
add file
(name='fg2',
filename='d:\fg2.ndf',
size=5mb)
to filegroup [fg2]
go
alter database adventureWorks
add file
(name='fg3',
filename='e:\fg3.ndf',
size=5mb)
to filegroup [fg3]
go
use adventureWorks
go
Create partition function emailPF(nvarchar(50)) as range right for values ('G','N')--創建分區函數
go
Create partition scheme emailPS as partition emailPF to (fg1,fg2,fg3)--創建分區方案
go
Create table customermail (custid int, email nvarchar(50)) on emailPS(email)--創建分區表
Go
?
?
為了簡化操作,SQL Server 2008中為表分區提供了相關的操作
這個向導有些詭異,居然希望表里面已經有數據。(費解)
?
最后生成的腳本是這樣的
USE [demo]
GO
BEGIN TRANSACTION
CREATE PARTITION FUNCTION [ordersfunction](date) AS RANGE LEFT FOR VALUES (N'2008-01-01', N'2008-02-01', N'2008-03-01')
CREATE PARTITION SCHEME [ordersscheme] AS PARTITION [ordersfunction] TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY])
CREATE CLUSTERED INDEX [ClusteredIndex_on_ordersscheme_633765890752500000] ON [dbo].[Orders]
(
??? [OrderDate]
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [ordersscheme]([OrderDate])
DROP INDEX [ClusteredIndex_on_ordersscheme_633765890752500000] ON [dbo].[Orders] WITH ( ONLINE = OFF )
COMMIT TRANSACTION
這里要注意一個語法,因為現在表已經存在了,那么就不能再通過CREATE TABLE的方式來創建分區表了,而是通過創建一個聚集索引的方式。但又把它刪除掉。
但是,如果表上面已經有一個聚集索引呢?肯定會出錯,因為一個表只能有一個聚集索引。那么該怎么辦呢?
我們發現向導會這樣做,先把原先的聚集索引改為非聚聚的。這很有點意思嘛
ALTER TABLE [dbo].[Orders] ADD? CONSTRAINT [PK_Orders] PRIMARY KEY NONCLUSTERED
(
??? [OrderId] ASC
)WITH (PAD_INDEX? = OFF, STATISTICS_NORECOMPUTE? = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS? = ON, ALLOW_PAGE_LOCKS? = ON) ON [PRIMARY]
?
除了提供了創建分區的向導之外,還有一個管理分區的向導,主要是可以做SWITCH,MERGE,SPLIT這些操作。也可以查看數據
?
?
除了這些圖形化工具的支持之外,SQL Server 2008的分區表還有不少增強,諸如性能等等方面
http://technet.microsoft.com/zh-cn/library/ms345599.aspx
轉載于:https://www.cnblogs.com/chenxizhang/archive/2009/04/29/1445834.html
總結
以上是生活随笔為你收集整理的使用SQL Server 2008提供的表分区向导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卢伟冰换新手机发微博:暗示K50宇宙终极
- 下一篇: 长期早醒可能是抑郁症的信号!医生:持续超