国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL 研究 相似的數據類型

2024-08-31 00:59:17
字體:
來源:轉載
供稿:網友

最常用的數值類型是int,但是它未必是最佳選擇。bigint,smallint,tinyint可以應用在特殊場合。他們的特性如下表所示:

Data type Range Storage

bigint

-2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)

8 Bytes

int

-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)

4 Bytes

smallint

-2^15 (-32,768) to 2^15-1 (32,767)

2 Bytes

tinyint

0 to 255

1 Byte

可見如果某一列的值只有10來個值,而你卻用了int,那么沒行數據多占用了3個字節。如果有1G的行數,那么你多用了3G的空間。如果它還在index中,ok,它又占用了不必要的3G。

與此類似的是Float和Real,他們的格式如下:

Data type Range Storage

float

- 1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308

Depends on the value of n

1,24=4 bytes

25,53=8bytes

real

- 3.40E + 38 to -1.18E - 38, 0 and 1.18E - 38 to 3.40E + 38

4 Bytes

需要說明的是,float的長度取決于一個參數,雖然我們通常聲明的時候并不指定float的長度,實際上是存在這樣的選項的。這個長度默認是53,數值范圍如上表所示。

顯然如果你要表示的數字不會超過10的38次方的話,你應該用real,他可以為你節省4個字節。

另一個相關的例子是decimal和numerical,他們是另一組精確表示數值的類型。float和real是不精確的,所以不能做相等的比較。

decimal和float在功能是等價的,為什么要分成兩個名字,我也不清楚。

decimal的聲明如下:decimal(p,s),p表示總共多少位,包括小數點前后的數字,s表示小數點后多少位,p不能超過38,當然s不能超過p,缺省是0。

decimal的范圍是正負10的p-s次方的結果 減去10的-s次方。比如decimal(2,1)的范圍是正負9.9。

decimal的長度和p的大小相關,如下表所示:

Precision Storage bytes

1 - 9

5

10-19

9

20-28

13

29-38

17

可使用變長字節來存放decimal。此時數據庫根據實際數值的大小來存放decimal,而不是根據聲明來判斷。如果表中沒有var length的列,那么需要額外的兩個字節,否則不會有額外的需要。

可以通過如下的命令啟動一個數據庫上的變長decimal存儲:

EXEC sp_db_vardecimal_storage_format 'AdventureWorks', 'ON' ;

通過EXEC sp_db_vardecimal_storage_format ;查看所有啟動了這一功能的數據庫。

通過EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;

啟動對某個表的變長decimal存儲。

最后再看看datetime和smalldatetime,兩者都表示時間,區別如下:

datetime表達的時間更久,1753到9999,精度更高,300分之一秒,占用8個字節;

smalldatetime表達的時間較短,1900到2079,精確到分,4個字節。

通常情況下,smalldatetime是夠用的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄯善县| 金塔县| 宁明县| 肇州县| 宝山区| 景东| 舒城县| 韶关市| 固阳县| 岑溪市| 涿州市| 尖扎县| 那坡县| 长葛市| 大冶市| 五莲县| 海门市| 万全县| 新源县| 来凤县| 海林市| 渭源县| 威海市| 神农架林区| 衢州市| 山东省| 沧源| 台安县| 法库县| 丰镇市| 白玉县| 海原县| 米易县| 平潭县| 改则县| 韶山市| 裕民县| 棋牌| 博野县| 西吉县| 眉山市|