2010-02-23 29 views
2

我愛的是2的力量。我慶祝我的32歲生日,知道這是32年來的最後一次,我可以聲稱我的年齡是2的力量。我迷戀。這就像是一些Z型蝙蝠俠惡棍,除了沒有豐富多彩的冒險和充滿batarangs的臉。我比較古怪的人物尺碼大小對我有什麼好處嗎?

我保證我所有的enum值是2的冪,如果只是爲了將來位運算,而且我有理由相信,有一些目的(即使潛在的)做這件事。

我不確定的地方在於如何定義數據庫字段的長度。再次,我無法幫助它。一切最終被2.

CREATE TABLE Person 
(
    PersonID int IDENTITY PRIMARY KEY 
    ,Firstname varchar(64) 
    ,Surname varchar(128) 
) 

電源可以在任何SQL超擠入誰知道如何在內部的東西是存儲和檢索告訴我是否有什麼好處我莫名的癡迷?這是更多效率來規模字符字段?任何人都可以用「實際上,你在做什麼工作,因爲.....」

我懷疑自己在年紀較大的時候會變得更瘋狂,但很高興知道我的瘋狂有一些方法。

+1

面對現實,你永遠不會像「美麗的頭腦」那樣成爲電影的主題。北大千方。另外,這是否令你煩惱:||||/ – Will 2010-02-23 16:03:47

+1

指定varchar(max)並忘記大小。 – 2010-02-23 16:03:52

回答

1

唯一相關的兩個冪分別是5124096,它們分別是默認的磁盤塊大小和內存頁大小。如果您的總行長度跨越這些界限,那麼可能會會注意到非比例跳躍和性能轉儲,如果您非常接近。例如,如果您的行長度爲513個字節,則需要爲單個行讀取兩倍的塊數,而不是長度爲512個字節的行。

問題是計算正確的行大小,因爲內部存儲格式沒有很好記錄。

此外,我不知道SQL Server是否實際上保持行塊對齊,所以你可能會在那裏運氣不好。

+0

磁盤塊大小不會暴露給應用程序,最佳做法是使用64k羣集爲SQL Server進行格式化,因爲IO的最小單位是一個範圍或64k。 8k頁面也是這樣存儲的。 8k和64k是SQL Server中的神奇數字,如果有的話 – gbn 2010-05-02 12:28:17

2

好吧,如果我是你的同事,並且正在閱讀你的代碼,我不必用SVN責備找出是誰寫的。這太酷了。 :)

0

使用varchar,你只能存儲字符數+2的長度。

一般情況下,最大行大小爲8060

CREATE TABLE dbo.bob (c1 char(3000), c2 char(3000), c31 char(3000)) 

Msg 1701, Level 16, State 1, Line 1 
Creating or altering table 'bob' failed because the minimum row size would be 9007, including 7 bytes of internal overhead. This exceeds the maximum allowable table row size of 8060 bytes. 

的2東西的力量是坦率地說不合理,這是不是一個程序員好...

相關問題