使用SQL Server 2005的3個(gè)理由
以前的處理大數(shù)據(jù)量時(shí)很多人會(huì)采取使用多個(gè)結(jié)構(gòu)相同的表按時(shí)間段來(lái)分,不同時(shí)間的數(shù)據(jù)存在不同的數(shù)據(jù)表里,這樣如果只查詢(xún)一個(gè)表的數(shù)據(jù)就很快,如果需要跨表查詢(xún)則再通過(guò)連接視圖將這些表連起來(lái)偽裝成一個(gè)表的樣子,這樣可以提高查詢(xún)效率,但犧牲了程序設(shè)計(jì)的優(yōu)雅性和數(shù)據(jù)庫(kù)設(shè)計(jì)的簡(jiǎn)單性,特別是在處理關(guān)系、約束、數(shù)據(jù)完整性時(shí)會(huì)非常的繁瑣復(fù)雜。
升級(jí)到sql2005可以采用分區(qū)表(partition table)來(lái)處理這種需求,我們可以將我們的分區(qū)規(guī)則寫(xiě)成分區(qū)函數(shù),然后我們的分區(qū)表就可以按照這個(gè)分區(qū)函數(shù)來(lái)將我們的表存儲(chǔ)在不同的存儲(chǔ)介質(zhì)上,當(dāng)我們查詢(xún)時(shí)SQL Server最優(yōu)化程序會(huì)自動(dòng)選擇分區(qū)做Join這樣當(dāng)然要比大數(shù)量過(guò)濾起來(lái)有效的多。
2:通過(guò)Row_Number來(lái)給查詢(xún)結(jié)果集加個(gè)序號(hào)
查詢(xún)結(jié)果集沒(méi)有序號(hào)郁悶的問(wèn)題相信折騰了不少人,每每有客戶(hù)指著我的Grid OR Report對(duì)我說(shuō)“小莫,你能不能給這個(gè)地方加個(gè)序號(hào)?”對(duì)于這樣的合理要求只能說(shuō)是,然后就將查詢(xún)來(lái)的結(jié)果手動(dòng)的加個(gè)序號(hào),對(duì)犧牲的性能也只好燒把高香祝福它能升上天堂,然后就是保佑著客戶(hù)查詢(xún)數(shù)據(jù)量不要太大。
升級(jí)到SQL2005 我可以將序號(hào)這個(gè)功能默認(rèn)給用戶(hù)不要他再給我提這樣的合理要求了。
3:交叉表惡夢(mèng)的結(jié)束
如果你做過(guò)考勤管理,選擇建31個(gè)列還是添加31行?選擇31列直觀,但你查詢(xún)的時(shí)候你也許更喜歡你頭撞墻而不是來(lái)查詢(xún),添加31行當(dāng)你決定用列顯示日期的時(shí)候你發(fā)現(xiàn)你還是愿意撞墻。還有當(dāng)你做類(lèi)似學(xué)生成績(jī)管理系統(tǒng)的時(shí)候你要將課程表中的課程數(shù)據(jù)做列學(xué)生表中的學(xué)生作行的時(shí)候這個(gè)時(shí)候你突然醒悟還是撞墻好些。
升級(jí)到SQL Server2005你可以用Pivot這個(gè)單詞的意思就是“樞軸”有了軸你可以將行扭成列還可將列扭成行(UNPivot)
關(guān)鍵字:SQL Server、數(shù)據(jù)庫(kù)
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶(hù)
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶(hù)的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解