什麼是SQL Server中的數據類型的好大小?當定義列時,我看到大小爲50的數據類型作爲默認大小之一(例如:nvarchar(50),binary(50))。 50的意義是什麼?我很想用2的冪的大小,是更好還是無用?數據類型應該是SQL Server中2的冪的大小嗎?
更新1 好的謝謝你的輸入傢伙。我只想知道爲列定義數據類型大小的最佳方法。
什麼是SQL Server中的數據類型的好大小?當定義列時,我看到大小爲50的數據類型作爲默認大小之一(例如:nvarchar(50),binary(50))。 50的意義是什麼?我很想用2的冪的大小,是更好還是無用?數據類型應該是SQL Server中2的冪的大小嗎?
更新1 好的謝謝你的輸入傢伙。我只想知道爲列定義數據類型大小的最佳方法。
之所以如此多的領域具有50的長度是SQL Server的默認值爲50的長度對於大多數的數據類型,長度是一個問題。
如前所述,字段的長度應該適合存儲在那裏的數據,這不僅僅是因爲SQL Server中單個記錄的長度有限制(大約8000字節)。有可能超過這個限制。
此外,您的字段的長度可以被視爲您的文檔的一部分。我不知道有多少次我遇到懶惰的程序員,他們聲稱他們不需要文檔,因爲代碼是自我記錄的,然後他們不會去做那些會使代碼自動記錄的事情。
字段的大小應該適合您計劃在其中存儲的數據,但全局默認值不是一個好主意。
這完全取決於你存儲的內容。 如果您需要x個字符,請使用x而不是一些任意預定義的數量。
對於性能等,沒有理由使用2的冪數。數據長度應由存儲的數據大小決定。
爲什麼不是2的傳統強國,零下1如255 ...
嚴重的是,長度應與你所需要的,適合你的數據。
閒來無事:客戶端如何使用它,對齊到32位字邊界的2,生日權力,天蠍座天王星,骰子滾動上升...
這是一個好主意,全行擬合多次進入頁面,而不會留下太多可用空間。
一行不能跨兩頁,一頁有8096
字節的可用空間,所以兩行佔用4049
字節每個將佔用兩頁。
請參閱docs關於如何計算一行佔用的空間。
還要注意的是VAR
在VARCHAR
和VARBINARY
代表「改變」,所以,如果你把一個1
字節值成50
字節列,將採取但1
字節。
使用2的冪數不會獲得任何結果。只要您的業務需求確實需要這些字段,就讓這些字段 - 讓SQL Server處理其餘部分。另外,由於SQL Server頁面大小限制爲8K(其中8060字節可用於用戶數據),因此儘可能小的變長字符串(但從需求角度看,只要需要)是一個好處。
8K限制是一個固定的SQL Server系統設置,無法更改。當然,SQL Server最近可以在一行中處理超過8K的數據,使用所謂的「溢出」頁面 - 但效率不高,因此試圖保持在8K以內通常是一個好主意。
馬克