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

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)如何選擇正確的數(shù)據(jù)類型

2024-07-21 02:43:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),選擇正確的數(shù)據(jù)類型,往往可以避免很多的問(wèn)題,正確理解數(shù)據(jù)庫(kù)的類型,對(duì)于存儲(chǔ)空間規(guī)劃,應(yīng)用性能調(diào)整都會(huì)很有幫助,下文中將對(duì)這些數(shù)據(jù)類型進(jìn)行詳細(xì)的講解。

1、Char

定長(zhǎng)格式字符串,在數(shù)據(jù)庫(kù)中存儲(chǔ)時(shí)不足位數(shù)填補(bǔ)空格,不建議使用,會(huì)帶來(lái)不必要的麻煩

a、字符串比較的時(shí)候,如果不注意(char不足位補(bǔ)空格)會(huì)帶來(lái)錯(cuò)誤

b、字符串比較的時(shí)候,如果用trim函數(shù),這樣該字段上的索引就失效(有時(shí)候會(huì)帶來(lái)嚴(yán)重性能問(wèn)題)

c、浪費(fèi)存儲(chǔ)空間

2、Varchar2/Varchar

不定長(zhǎng)格式字符串,對(duì)于4000字節(jié)以內(nèi)的字符串,建議都用該類型

a、網(wǎng)上有說(shuō)char比varchar2性能好,但是如果你有興趣做測(cè)試的話,會(huì)發(fā)現(xiàn)沒(méi)有區(qū)別(如果發(fā)生行遷移,可以通過(guò)pctfree來(lái)調(diào)整)

b、充分利用存儲(chǔ)空間

3、Long/long raw

Oracle已經(jīng)廢棄,只是為了向下兼容保留著,應(yīng)該全部升級(jí)到lob

Long類型有很多限制

a、表中只能有一列l(wèi)ong類型

b、Long類型不支持分布式事務(wù)

c、太多的查詢不能在long上使用了

4、Number

定義Number的方法:Number(p,s)

其中p,s都是可選的:

a、p代表精度,默認(rèn)為38

b、s代表小數(shù)位數(shù),取值范圍-84~127,默認(rèn)取值要看是否指定了p,如果制定了p,默認(rèn)s為0,如果沒(méi)有指定p,默認(rèn)取最大值。

幾個(gè)例子:

a、 Number(5,0)=Number(5) 取值范圍99999~-99999

b、 Number(5,2) 取值范圍999.99~-999.99

注意:其中的整數(shù)位數(shù)只有3位,小數(shù)位數(shù)有2位,按照如下方法計(jì)算:

整數(shù)位數(shù)<=p-s

小數(shù)位數(shù)<=s

如果插入123.555存儲(chǔ)在數(shù)據(jù)庫(kù)中變成123.56 (在小數(shù)的第三位上四舍五入),如果插入999.999,數(shù)據(jù)庫(kù)就要拋錯(cuò)。

c、 Number(5,-2) 取值范圍9999900~-9999900 (整數(shù)位數(shù)<=p-s,沒(méi)有小數(shù)位數(shù))

如果插入9999949存儲(chǔ)在數(shù)據(jù)庫(kù)中變成9999900(在整數(shù)的第二位上四舍五入),如果插入9999950,數(shù)據(jù)庫(kù)就要拋錯(cuò)。

其他的數(shù)值類型都是number的衍生,底層都是number,比如integer/int完全映射到number(38)

性能相關(guān):number是一種軟實(shí)現(xiàn)的類型,如果需要對(duì)number做復(fù)雜的運(yùn)算,建議先用cast內(nèi)置函數(shù)轉(zhuǎn)換number為浮點(diǎn)數(shù)類型

另外需要注意的一點(diǎn)是:number是變長(zhǎng)類型,在計(jì)算表存儲(chǔ)空間的時(shí)候要切記

5、Date

Date類型是一個(gè)7字節(jié)的定長(zhǎng)數(shù)據(jù)類型,沒(méi)啥好說(shuō)的,一個(gè)例子:性能a>b>c

a、Where date_colum>=to_date(’01-jan-2007’,’dd-mon-yyyy’)

and date_colum< DIV>

b、Where trunc(date_colum,’y’)=to_date(’01-jan-2007’,’dd-mon-yyyy’)

c、Where to_char(date_colum,’yyyy’)=’2007’

6、 Timestamp/timestamp with time zone/timestamp with local time zone

和date類似,只不過(guò)它另外支持小數(shù)秒和時(shí)區(qū)。語(yǔ)法Timestamp(n),n指定秒的小數(shù)位數(shù),取值范圍0~9。可選。

7、Lob

Clob/blob實(shí)現(xiàn)是比較復(fù)雜的,這里只提提幾個(gè)和性能相關(guān)的點(diǎn),當(dāng)然能不用lob盡量不用:

a、 一個(gè)lob字段包括lobindex和lobsegment

b、 Lob缺省可以存放在表中(表字段),條件是:

1.它的大小小于4kb

2.并且在定義的時(shí)候沒(méi)有使用(disable storage inrow)字句(缺省是enable)

當(dāng)lob大于4kb的時(shí)候它會(huì)被存放到lobsegment中

c、當(dāng)lob存放在表中的時(shí)候,它可以被緩存,對(duì)于它的操作效率遠(yuǎn)遠(yuǎn)高于存儲(chǔ)在lobsegment中的lob(不用lobindex)

d、 存儲(chǔ)在lobsegment中的lob缺省不在緩沖區(qū)緩存,對(duì)于lob的讀寫都是物理IO,代價(jià)非常高,所以對(duì)于大于4kb的lob字段千萬(wàn)不要頻繁更新,效率非常低

e、 存儲(chǔ)在lobsegment中的lob可以在定義的時(shí)候指定使用cache(默認(rèn)是nocache),這對(duì)于中等大小的lob(比如幾k~幾十k)很有用處,同時(shí),它還可以減少物理IO。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 金塔县| 许昌市| 龙州县| 镇雄县| 进贤县| 大悟县| 遂溪县| 孙吴县| 华池县| 鄂托克前旗| 镇巴县| 泉州市| 平泉县| 阜南县| 康定县| 油尖旺区| 济源市| 驻马店市| 广州市| 涟源市| 曲水县| 汽车| 额济纳旗| 称多县| 武功县| 利津县| 连州市| 四子王旗| 灵石县| 加查县| 鸡东县| 万盛区| 丰宁| 清水河县| 晴隆县| 津市市| 安庆市| 新宾| 汪清县| 嵩明县| 什邡市|