SQL Server數(shù)據(jù)庫(kù)分區(qū)表的應(yīng)用實(shí)例
用SQL Server數(shù)據(jù)庫(kù)做一個(gè)網(wǎng)游發(fā)號(hào)系統(tǒng)。功能是將廠商給的N個(gè)卡號(hào)導(dǎo)入到庫(kù)里在固定的時(shí)間為用戶提供領(lǐng)取。這個(gè)系統(tǒng)***的亮點(diǎn)應(yīng)該就是這個(gè)N的不確定性,不同的廠商提供的卡數(shù)量不同,N可能是10也可能是10W。經(jīng)過分析得表結(jié)構(gòu)如下圖:
現(xiàn)在做一個(gè)簡(jiǎn)單的測(cè)試,在這個(gè)表里插入2000W條數(shù)據(jù),然后根據(jù)ActivityID隨機(jī)查詢一條數(shù)據(jù)出來,居然需要4秒多。。于是決定嘗試用分區(qū)表來優(yōu)化查詢效率。
分區(qū)函數(shù)如下:
- CREATE PARTITION FUNCTION [Card_PF](int)
- AS
- RANGE LEFT FOR VALUES (500, 1000, 1500, 2000, 2500, 3000)
這里我是用的ActivityID作為分區(qū)的條件。每500個(gè)活動(dòng)一個(gè)區(qū)。
分區(qū)方案如下:
- CREATE PARTITION SCHEME [Card_PS]
- AS
- PARTITION [Card_PF] TO ([Card1], [Card2], [Card3], [Card4], [Card5], [Card6], [Card7])
下圖是對(duì)應(yīng)的文件和文件組:
接下來就是最關(guān)鍵的一步,為這個(gè)表增加一個(gè)聚合索引,并且采用上面創(chuàng)建的分區(qū)方案:
到此為止分區(qū)表已經(jīng)創(chuàng)建完畢,為了更好的測(cè)試效果我在這個(gè)新建立的表里從新插入2000W條數(shù)據(jù),同樣的SQL語(yǔ)句運(yùn)行時(shí)間在1秒左右。
關(guān)于SQL Server數(shù)據(jù)庫(kù)分區(qū)表的知識(shí)就介紹到這里,如果您想了解更多的SQL Server數(shù)據(jù)庫(kù)的知識(shí),可以看一下這里的文章:http://database.51cto.com/sqlserver/,您的收獲將是我們***的快樂!
【編輯推薦】