<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    認識oracle數據類型

    作者:tacy lee

    在設計數據庫的時候,選擇正確的數據類型,往往可以避免很多的問題,正確理解數據庫的類型,對于存儲空間規劃,應用性能調整都會很有幫助,下面是我個人的一點總結:
     
    1、 Char
    定長格式字符串,在數據庫中存儲時不足位數填補空格,不建議使用,會帶來不必要的麻煩
    a、  字符串比較的時候,如果不注意(char不足位補空格)會帶來錯誤
    b、  字符串比較的時候,如果用trim函數,這樣該字段上的索引就失效(有時候會帶來嚴重性能問題)
    c、  浪費存儲空間
     
    2、 Varchar2/Varchar
    不定長格式字符串,對于4000字節以內的字符串,建議都用該類型
    a、  網上有說char比varchar2性能好,但是如果你有興趣做測試的話,會發現沒有區別(如果發生行遷移,可以通過pctfree來調整)
    b、  充分利用存儲空間
     
    3、 Long/long raw
    Oracle已經廢棄,只是為了向下兼容保留著,應該全部升級到lob
    Long類型有很多限制
    a、  表中只能有一列long類型
    b、  Long類型不支持分布式事務
    c、  太多的查詢不能在long上使用了
     
    4、 Number
    定義Number的方法:Number(p,s)
    其中p,s都是可選的:
    a、  p代表精度,默認為38
    b、  s代表小數位數,取值范圍-84~127,默認取值要看是否指定了p,如果制定了p,默認s為0,如果沒有指定p,默認取最大值。
    幾個例子:
    a、  Number(5,0)=Number(5) 取值范圍99999~-99999
    b、  Number(5,2) 取值范圍999.99~-999.99
    注意:其中的整數位數只有3位,小數位數有2位,按照如下方法計算:
          整數位數<=p-s
          小數位數<=s
    如果插入123.555存儲在數據庫中變成123.56 (在小數的第三位上四舍五入),如果插入999.999,數據庫就要拋錯。
    c、  Number(5,-2) 取值范圍9999900~-9999900 (整數位數<=p-s,沒有小數位數)
    如果插入9999949存儲在數據庫中變成9999900(在整數的第二位上四舍五入),如果插入9999950,數據庫就要拋錯。
    其他的數值類型都是number的衍生,底層都是number,比如integer/int完全映射到number(38)
    性能相關:number是一種軟實現的類型,如果需要對number做復雜的運算,建議先用cast內置函數轉換number為浮點數類型
    另外需要注意的一點是:number是變長類型,在計算表存儲空間的時候要切記
     
    5、 Date
    Date類型是一個7字節的定長數據類型,沒啥好說的,一個例子:性能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類似,只不過它另外支持小數秒和時區。語法Timestamp(n),n指定秒的小數位數,取值范圍0~9。可選。
     
    7、 Lob
    Clob/blob實現是比較復雜的,這里只提提幾個和性能相關的點,當然能不用lob盡量不用:
    a、  一個lob字段包括lobindex和lobsegment
    b、  Lob缺省可以存放在表中(表字段),條件是:
         1.它的大小小于4kb
         2.并且在定義的時候沒有使用(disable storage inrow)字句(缺省是enable)
         當lob大于4kb的時候它會被存放到lobsegment中
    c、  當lob存放在表中的時候,它可以被緩存,對于它的操作效率遠遠高于存儲在lobsegment中的lob(不用lobindex)
    d、  存儲在lobsegment中的lob缺省不在緩沖區緩存,對于lob的讀寫都是物理IO,代價非常高,所以對于大于4kb的lob字段千萬不要頻繁更新,效率非常低
    e、  存儲在lobsegment中的lob可以在定義的時候指定使用cache(默認是nocache),這對于中等大小的lob(比如幾k~幾十k)很有效果,減少物理IO

    posted on 2007-09-07 17:10 tacy lee 閱讀(1564) 評論(0)  編輯  收藏 所屬分類: 數據庫

    主站蜘蛛池模板: 91免费国产视频| 黄色毛片免费观看| 亚洲视频在线观看免费视频| 亚洲精品无码久久不卡| 亚洲愉拍一区二区三区| 一本岛高清v不卡免费一三区| 亚洲AV人人澡人人爽人人夜夜| 99久久成人国产精品免费| 亚洲精品无码久久一线| 国产伦精品一区二区免费| 亚洲人成中文字幕在线观看| 国产情侣久久久久aⅴ免费| 一级毛片在线观看免费| 亚洲AV美女一区二区三区| 51在线视频免费观看视频| 亚洲欧洲日产v特级毛片| 最近的中文字幕大全免费8| 亚洲自偷自偷精品| 久久久久国色av免费看| 亚洲黄色网址大全| 男人j进女人p免费视频| 国产精品深夜福利免费观看| 久久精品国产亚洲av麻豆图片 | 国产成人高清亚洲一区久久 | 亚洲精品国产高清嫩草影院| 国产精品亚洲lv粉色| 亚洲一区二区三区免费观看| 香蕉成人免费看片视频app下载| 国产日产亚洲系列| 精品在线免费观看| 久久久久亚洲AV无码永不| 免费专区丝袜脚调教视频| 亚洲一区AV无码少妇电影| 免费电影在线观看网站| 亚洲人成色777777老人头| 国产免费私拍一区二区三区| 国产成人无码精品久久久久免费| 亚洲成a人片在线观看日本麻豆 | 三年片在线观看免费观看大全一 | 国产亚洲综合成人91精品 | 亚洲精品无码午夜福利中文字幕 |