2012-08-08 128 views
0

我有一個基本的分區問題。sql server 2008分區

我有一個表,看起來像這樣:

CREATE TABLE [dbo].[WeatherStationData](
    [Time] [smalldatetime] NOT NULL, 
    [pk_WS] [int] NOT NULL, 
    [TemperatureF] [decimal](5, 1) NULL, 
      .... 
CONSTRAINT [PK_WeatherStationData] PRIMARY KEY CLUSTERED 
(
    [Time] ASC, 
    [pk_WS] ASC 
) [PRIMARY] 
) ON [PRIMARY] 

我創造了這個分區的功能:

CREATE PARTITION FUNCTION pfWSD (DATETIME) AS RANGE RIGHT 
FOR 
VALUES (
    '01/01/2007', 
    '01/01/2008', 
    '01/01/2009', 
    '01/01/2010', 
    '01/01/2011', 
    '01/01/2012' 
    ); 

而這個分區方案:

CREATE PARTITION SCHEME [psWSD] AS PARTITION [pfWSD] TO (
    [WSD0000] 
    ,[WSD2007] 
    ,[WSD2008] 
    ,[WSD2009] 
    ,[WSD2010] 
    ,[WSD2011] 
    ,[WSD2012] 
    ) 

當我運行:

SELECT $PARTITION.pfWSD([Time]) AS Partition, 
COUNT(*) AS [COUNT] FROM dbo.WeatherStationData 
GROUP BY $PARTITION.pfWSD([Time]) 
ORDER BY Partition ; 

結果是這樣的:

Partition COUNT 
----------- ----------- 
2   3396337 
3   5408747 
4   6576450 
5   9602069 
6   12650615 
7   5577064 

然而,當我在看的基礎文件,它們都是99%免費(初始大小爲2048MB,2047MB免費),以及主文件組仍大而且大多是滿的。該表是空的,並在設置分區後將數據加載到該表中。我不認爲分區工作,我還需要檢查什麼?

回答

0

忘了創建分區方案的表,應該是:

CREATE TABLE [dbo].[WeatherStationData](
    [Time] [smalldatetime] NOT NULL, 
    [pk_WS] [int] NOT NULL, 
    [TemperatureF] [decimal](5, 1) NULL, 
     .... 
CONSTRAINT [PK_WeatherStationData] PRIMARY KEY CLUSTERED 
(
    [Time] ASC, 
    [pk_WS] ASC 
) **psWSD([Time])** 
) ON **psWSD([Time])**