日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlserver表分区

發布時間:2024/8/24 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlserver表分区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原理就類似于把一個表的資 料放在不同的分區里面,當查詢時,如果都在同一個單獨的分區內的話,就不用進行全表掃描,因此在這些情況下可以提高查詢的效率,但如果所有分區都要查詢所 有資料的話,分區并不會提高效率.

--創建分區表過程一共分為三步:創建分區函數、創建分區方案、創建分區表 USE [CardID] GO BEGIN TRANSACTION ----創建分區函數 CREATE PARTITION FUNCTION [SlotecardFunction](datetime) AS RANGE left FOR VALUES (N'2014-03-26T00:00:00', N'2014-04-26T00:00:00', N'2014-05-26T00:00:00', N'2014-06-26T00:00:00', N'2014-07-26T00:00:00', N'2014-08-26T00:00:00', N'2014-09-26T00:00:00') --查看分區函數是否創建成功--select * from sys.partition_functions --創建分區方案 關聯到分區函數 CREATE PARTITION SCHEME [Slotecard] AS PARTITION [SlotecardFunction] TO ([PRIMARY], [fg1], [fg2], [fg3], [fg4], [fg5], [fg6], [fg7])--查看已創建的分區方案 --select * from sys.partition_schemes ALTER TABLE [dbo].[ak_SloteCardTimes] DROP CONSTRAINT [PK_ak_SloteCardTimes] --這里要注意一個語法,因為現在表已經存在了,那么就不能再通過CREATE TABLE的方式來創建分區表了,而是通過創建一個聚集索引的方式。但又把它刪除掉。 --但是,如果表上面已經有一個聚集索引呢?肯定會出錯,因為一個表只能有一個聚集索引。那么該怎么辦呢? --我們發現向導會這樣做,先把原先的聚集索引改為非聚聚的。 ALTER TABLE [dbo].[ak_SloteCardTimes] ADD CONSTRAINT [PK_ak_SloteCardTimes] PRIMARY KEY NONCLUSTERED ([RecordID] 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]--創建聚集索引 CREATE CLUSTERED INDEX [ClusteredIndex_on_Slotecard_635317831823593750] ON [dbo].[ak_SloteCardTimes] (
[SloteCardTime] )WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [Slotecard]([SloteCardTime])--刪除聚集索引 DROP INDEX [ClusteredIndex_on_Slotecard_635317831823593750] ON [dbo].[ak_SloteCardTimes] WITH ( ONLINE = OFF )COMMIT TRANSACTION

除了提供了創建分區的向導之外,還有一個管理分區的向導,主要是可以做SWITCH,MERGE,SPLIT這些操作。也可以查看數據 也可以手動創建新的分區臨時表

select $PARTITION.Slotecard([SloteCardTime]) as 分區編號,count([RecordID]) as 記錄數 from [ak_SloteCardTimes] group by $PARTITION.Slotecard([SloteCardTime]) -- 查詢某個分區 --這里我們要用到$PARTITION 函數,這個函數可以幫助我們查詢某個分區的數據,還可以檢索某個值所隸屬的分區號。$PARTITION 函數的進一步細節可以查看MSDN --查詢已分區表Order的第一個分區,代碼如下:select*from [ak_SloteCardTimes] where $partition.Slotecard([SloteCardTime])=1

?

轉載于:https://www.cnblogs.com/Warmsunshine/p/3636262.html

總結

以上是生活随笔為你收集整理的sqlserver表分区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。