我們看到有些數(shù)據(jù)庫(kù)表中有兩個(gè)字段,類(lèi)型分別為 varchar(8000)、varchar(8000),我們說(shuō)這種設(shè)計(jì)是錯(cuò)誤的,為什么呢?

SQL Server 存儲(chǔ)中有個(gè)“頁(yè)”的概念,一個(gè)“頁(yè)”是 8K 大小,而一個(gè)數(shù)據(jù)行(一條記錄)必須存儲(chǔ)在一個(gè)頁(yè)中,不能拆開(kāi)存儲(chǔ)在多個(gè)頁(yè)中,也就是說(shuō)一個(gè)數(shù)據(jù)行(一條記錄)的大小最多是 8K,實(shí)際上由于 SQL Server 的頁(yè)還具有頁(yè)頭,某些類(lèi)型的字段還要額外占用一些空間,一個(gè)數(shù)據(jù)行(一條記錄)的最大大小常常也只有七千多字節(jié)。

上述表設(shè)計(jì)中一個(gè)字段就達(dá)到了 8000 字節(jié),不要說(shuō)一個(gè)數(shù)據(jù)行(一條記錄)了。

有人說(shuō),我雖然指定的是 8000 字節(jié),但我存儲(chǔ)時(shí)不存儲(chǔ)滿(mǎn)總可以了吧。技術(shù)上是允許的,但既然我們用不了那么多字節(jié),為什么要寫(xiě)那么大呢?是不是考慮我們得用 text 字段,或者修改一下表結(jié)構(gòu)。

如果一個(gè)數(shù)據(jù)行(一條記錄)足夠的小,一個(gè)頁(yè)就可以存儲(chǔ)更多的數(shù)據(jù)行(記錄),SQL Server 查詢(xún)時(shí)就不用翻太多的頁(yè),查詢(xún)起來(lái)就會(huì)更快。

引用地址:http://www.cftea.com/c/2006/10/TNRWRCF871NS33K4.asp