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

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

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

    posts - 89,  comments - 98,  trackbacks - 0
    Oracle9i與ASE12.5分別是世界主流數(shù)據(jù)庫廠商ORACLE、SYBASE公司的主打產(chǎn)品,擁有相當(dāng)大的市場份額。本文拋開兩者之間在體系結(jié)構(gòu)、技術(shù)路線上的差異,純粹從使用者的角度出發(fā),整理了Oracle9i與SYBASE Adaptive Server Enterprise 12.5 (簡稱ASE12.5)相比的幾個不足,至于ASE12.5與Oracle9i相比的不足則不在本文的討論范圍。

    1 不支持正則表達(dá)式:熟悉Unix/Linux及ASE12.0/12.5的人都知道正則表達(dá)式的靈活、功能強(qiáng)大。像“查找所有包含數(shù)字的表名稱”這樣的需求,在ASE12.5中極其簡單:

    select name from sysobjects where type=”U” and name like “%[0-9]%” (這里sysobjects相當(dāng)于Oracle9i中的all_objects),而Oracle9i的實現(xiàn)要頗費一番周折了,一般情況下很多人都是寫一個函數(shù)實現(xiàn),以下就是剛學(xué)Oracle的時候?qū)懙囊粋€實現(xiàn)該功能的函數(shù):

    CREATE OR REPLACE function is_number(p_str in varchar2)

    return number

    as

    ? w_char char(1);

    ? i????? number :=1;

    begin

    ? while? i <= length(p_str) loop

    ?????? w_char := substr(p_str,i,1);

    ?????? if w_char >='0' and w_char <='9' then

    ????????? return 1;

    ??? ???end if;

    ??? i:=i+1;

    ??? end loop;

    ? return 0;

    end;

    /

    在Oracle9i調(diào)用一個自定義的PL/SQL函數(shù)開銷會很大;遠(yuǎn)不及ASE12.5的內(nèi)部實現(xiàn)。

    2? UPDATE語句的“蹩腳”,在數(shù)據(jù)庫的應(yīng)用中,兩個表關(guān)聯(lián)update是很常見的,如有如下兩個表:t_a(id,name,point,…),t_b(id,point,…) id均為主鍵或unique index,現(xiàn)要實現(xiàn)根據(jù)id的對應(yīng)關(guān)系將t_b表上point加至t_a表point。我們來看Oracle9i與ASE12.5的實現(xiàn):

    /** For Oracle9i **/

    Update t_a a

    Set? ?a.point=a.point+(select b.point from t_b b where b.id=a.id)

    Where exists (select 1 from from t_ b where b.id=a.id)

    /

    /** For ASE12.0/12.5 **/

    Update t_a

    Set??? point=a.point+b.point

    From? t_a a,t_b b

    Where? a.id=b.id

    Go

    Oracle9i的語句似乎不顧清晰、容易誤解,而且查看執(zhí)行計劃發(fā)現(xiàn)t_b表或索引掃描了2遍!ASE12.5只掃描了1遍。雖然第2遍是邏輯讀,但總覺得不甘心;

    有時如果t_b表較小,且id上無索引,我寧愿采用cursor方式,多次試驗表明

    比Create INDEX+關(guān)聯(lián)UPDATE要快得多。還有就是采用Oracle9i的OLAP特性,用merge 語句來完成。

    3臨時表技術(shù)的比較:

    ?

    ITEM

    存儲位置

    DDL

    數(shù)據(jù)生命周期

    ORACLE9i

    任何表空間

    用戶自己維護(hù),表名是全局(數(shù)據(jù)庫用戶)唯一

    Session / Transaction

    ASE12.5

    Tempdb庫

    用戶create;用戶drop或系統(tǒng)drop,表名Session級唯一

    Session

    ?

    ?

    ?

    ?

    ?

    雖然兩者各有所長,但我覺得ASE12.5的實現(xiàn)似乎更得”臨時”的精髓—在每個會話期間,“召之即來”,不用擔(dān)心與別人重名,#11 #22 #aa #bb隨個人喜好創(chuàng)建,”揮之即去”, 會話結(jié)束亦不必顯式刪除,由系統(tǒng)代勞,不必?fù)?dān)心垃圾表存在。

    ?4? Count的問題還是Distinct的問題?在select 語句使用 distinct 關(guān)鍵字修飾以返回唯一的行集,這在統(tǒng)計分析、剔除重復(fù)數(shù)據(jù)尤為重要,但是有時僅想統(tǒng)計一個總數(shù)呢?我第一次是這樣寫的:

    Select count(distinct a,b,c) from my_table 結(jié)果語法不對,只好修改為:

    Select count(*) from ( select distinct a,b,c from my_table ) 方得以通過,心想這一定是distinct惹的禍,但隨后發(fā)現(xiàn)distinct 被冤枉了,因為即使是:

    Select count(a,b,c) from my_table 也是不行的。只能寫成:

    Select count(*) from ( select a,b,c from my_table )

    但在ASE12.5上無論是Select count(distinct a,b,c) from my_table 還是Select count(a,b,c) from my_table 均能得出正確結(jié)果。

    5? 數(shù)據(jù)導(dǎo)入導(dǎo)出工具的比較:Exp/Imp在備份和恢復(fù)方面用的比較多,且受版本(高低版本、32bit/64bit)、語言影響較大,且sqlldr 只能算作導(dǎo)入工具,嚴(yán)格來說Oracle9i沒有表數(shù)據(jù)的文本級的導(dǎo)出工具!相反,ASE12.5的bcp 的在表數(shù)據(jù)導(dǎo)入導(dǎo)出方面的很靈活,格式也很簡單,很容易做應(yīng)用程序的輸入。還有視圖、存儲過程、觸發(fā)器的導(dǎo)出工具defncopy也很好用;至于Oracle9i,我N+1次遇到以下情況:

    問:我怎么得到某個存儲過程的代碼???

    答:有沒有裝client阿?

    問:裝了!

    答:打開Enterprise Manager Console,登錄后在方案下面找吧

    ……

    問:怎么麻煩阿?

    答:那你有沒有裝Toad或者PL/Develop阿,這些工具好用點

    問:沒有??!

    答:L

    或者

    問:我怎么得到某個存儲過程的代碼?。?br />
    答:有沒有裝client阿?

    問:裝了,可我在主機(jī)上??!

    答:那你用sqlplus看罷,

    set long 300

    select text from all_source where name=’YourName’

    go

    問:哇,怎么麻煩阿

    答:L

    要是在ASE12.0

    問:我怎么得到某個存儲過程的代碼???

    答:用defncopy 吧

    問:怎么用啊

    答:我靠,這么簡單!你還用問阿!J

    6? 聯(lián)機(jī)備份:雖然Oracle9i提供了冷、熱備份技術(shù),但是與ASE12.5基于Open Server技術(shù)的聯(lián)機(jī)實時備份Backup Server相比似乎遜色不少,將備份的介質(zhì)直接拿到另外一臺ASE12.5進(jìn)行Load,很快很簡單就能獲得一個時效性極強(qiáng)的”鏡像”數(shù)據(jù)庫環(huán)境。而我覺得Exp/Imp比較瑣碎,且限制也較多。

    Oracle9i附帶的命令行工具如sqlplus exp/imp sqlldr等,執(zhí)行時無一例外都將輸出時間、版本、版權(quán)信息,給像我這樣喜歡用shell處理結(jié)果的人來說徒增不少麻煩,相比ASE12.5的isql bcp defncopy 的干凈利落,是Oracle9i的無聊和”自戀”,還是埃里克森的霸氣呢?
    posted on 2006-09-20 11:51 水煮三國 閱讀(335) 評論(0)  編輯  收藏 所屬分類: Sybase
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類(85)

    隨筆檔案(89)

    文章分類(14)

    文章檔案(42)

    收藏夾(37)

    java

    oracle

    Sybase

    搜索

    •  

    積分與排名

    • 積分 - 210828
    • 排名 - 266

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一本天堂ⅴ无码亚洲道久久| 久久精品国产亚洲夜色AV网站| 久久久久se色偷偷亚洲精品av| 8x8×在线永久免费视频| 国产亚洲综合成人91精品| 久久精品免费大片国产大片| 久久久久亚洲精品天堂久久久久久| 国产大片免费天天看| 亚洲欧洲国产经精品香蕉网| 久久免费视频99| 亚洲精品在线播放| 日韩在线免费视频| 亚洲免费福利在线视频| 四虎国产精品免费久久| 亚洲变态另类一区二区三区| 性做久久久久免费看| 日本一区二区三区在线视频观看免费 | 成人精品综合免费视频| 亚洲中文字幕无码爆乳av中文 | 麻豆精品成人免费国产片| 午夜成年女人毛片免费观看| 免费观看的a级毛片的网站| 亚洲精品动漫免费二区| 亚洲国产精品自产在线播放 | 皇色在线免费视频| 亚洲人成在线电影| 少妇高潮太爽了在线观看免费| 色五月五月丁香亚洲综合网| 国产成人精品免费午夜app| 亚洲真人无码永久在线| 久章草在线精品视频免费观看| 亚洲国产av美女网站| 国产禁女女网站免费看| 三上悠亚电影全集免费| 亚洲喷奶水中文字幕电影| 国产精品久免费的黄网站| 日本人成在线视频免费播放| 亚洲情A成黄在线观看动漫软件 | 亚洲成AV人片在线观看无码| 1000部国产成人免费视频| 国产成人综合亚洲绿色|