sql server 2005中的表分割槽

2021-06-15 05:35:59 字數 3521 閱讀 3005

sql server 2005中,終於引入了表分割槽,就是說,當乙個表裡的資料很多時,可以將其分拆到

多個的表裡,大大提高了效能。下面舉例子說明之

比如,在c盤下建立如下幾個目錄

c:\data2\primary

c:\data2\fg1

c:\data2\fg2

c:\data2\fg3

c:\data2\fg4

其中primary存放的是主資料庫檔案,其他fg1--fg4存放四個單獨的檔案組,可以見創立資料庫

data partition db2,如下

use [master]

go/****** object: database [data partition db] script date: 10/08/2006 23:09:53 ******/

if exists (select name from sys.databases where name = n'data partition db2')

drop database [data partition db2]

gocreate database [data partition db2]

on primary

(name='data partition db primary fg',

filename=

'c:\data2\primary\data partition db primary fg.mdf',

size=5,

maxsize=500,

filegrowth=1 ),

filegroup [data partition db fg1]

(name = 'data partition db fg1',

filename =

'c:\data2\fg1\data partition db fg1.ndf',

size = 5mb,

maxsize=500,

filegrowth=1 ),

filegroup [data partition db fg2]

(name = 'data partition db fg2',

filename =

'c:\data2\fg2\data partition db fg2.ndf',

size = 5mb,

maxsize=500,

filegrowth=1 ),

filegroup [data partition db fg3]

(name = 'data partition db fg3',

filename =

'c:\data2\fg3\data partition db fg3.ndf',

size = 5mb,

maxsize=500,

filegrowth=1 ),

filegroup [data partition db fg4]

(name = 'data partition db fg4',

filename =

'c:\data2\fg4\data partition db fg4.ndf',

size = 5mb,

maxsize=500,

filegrowth=1 )

接下來,我們建立分割槽表函式,這其實可以理解為乙個規則,說明如何以乙個規則來將乙個表來劃分,如下

use [data partition db2]

gocreate partition function [data partition range](int)

as range left for values (100,200,300)

其中分割槽函式的名稱是data partition range,後面的型別(int)表明接下來用來分割槽的那個欄位的型別是int型別,

而values (100,200,300)表明,將把表分為4個區了,是從負數到100,100-200,200-300,大於300。
接下來,我們要建立分割槽架構,即將分割槽函式應用到我們分好的四個檔案組裡面去
use [data partition db2]

gocreate partition scheme [data partition scheme]

as partition [data partition range]

to ([data partition db fg1], [data partition db fg2], [data partition db fg3],[data partition db fg4]);

再建立表的結構

use [data partition db2]

go

create table mytable

(id int not null, date datetime, cost money)    

on [data partition scheme] (id);

這裡注意,on [data partition scheme] (id);表明,劃分時以id的大小作為劃分的根據,on後要跟分割槽架購的名稱

最後,我們可以填充資料了

use [data partition db2]

godeclare @count int

set @count =-25

while @count <=100

begin

insert into mytable select @count,getdate(),100.00

set @count=@count+1

endset @count =101

while @count <=200

begin

insert into mytable select @count,getdate(),200.00

set @count=@count+1

endset @count =201

while @count <=300

begin

insert into mytable select @count,getdate(),300.00

set @count=@count+1

endset @count =301

while @count <=400

begin

insert into mytable select @count,getdate(),400.00

set @count=@count+1

endset @count =401

while @count <=800

begin

insert into mytable select @count,getdate(),500.00

set @count=@count+1

end

最後,我們可以查詢下,插入的這些資料,是否真的被劃分到四個不同的檔案組裡的表分割槽了,可以這樣看

select *, $partition.[data partition range](id)

from mytable

sql server 2005中的output子句

今天看了下sql server 2005中的output子句,以使您可以從修改語句 insert update delete 中將資料返回到表變數中。帶結果的 dml 的有用方案包括清除和存檔 訊息處理應用程式以及其他方案。這一新的 output 子句的語法為 output into table v...

With在sql server 2005中的用法

with在msdn中的講解,可以參考鏈結 1 2 建立錶值變數型別 3 4create type ty newareagoods as table 5 areaid int notnull,6 goodsid int notnull 7 8 9 創鍵返回今天 的資料 10 根據有 的地區獲取參 11...

sql server 2005中的output子句

今天看了下sql server 2005中的output子句,以使您可以從修改語句 insert update delete 中將資料返回到表變數中。帶結果的 dml 的有用方案包括清除和存檔 訊息處理應用程式以及其他方案。這一新的 output 子句的語法為 output into table v...