• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            tbwshc

            tbw

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(4)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            三、只返回需要的數(shù)據(jù)

            返回?cái)?shù)據(jù)到客戶端至少需要數(shù)據(jù)庫(kù)提取數(shù)據(jù)、網(wǎng)絡(luò)傳輸數(shù)據(jù)、客戶端接收數(shù)據(jù)以及客戶端處理數(shù)據(jù)等環(huán)節(jié),如果返回不需要的數(shù)據(jù),就會(huì)增加服務(wù)器、網(wǎng)絡(luò)和客戶端的無(wú)效勞動(dòng),其害處是顯而易見的,避免這類事件需要注意:

            A、橫向來(lái)看,

            (1)不要寫SELECT *的語(yǔ)句,而是選擇你需要的字段。

            (2)當(dāng)在SQL語(yǔ)句中連接多個(gè)表時(shí), 請(qǐng)使用表的別名并把別名前綴于每個(gè)Column上.這樣一來(lái),就可以減少解析的時(shí)間并減少那些由Column歧義引起的語(yǔ)法錯(cuò)誤。

            1. 如有表table1(ID,col1)和table2 (ID,col2)  
            2. Select A.ID, A.col1, B.col2  
            3. -- Select A.ID, col1, col2 –不要這么寫,不利于將來(lái)程序擴(kuò)展  
            4. from table1 A inner join table2 B on A.ID=B.ID Where … 

            B、縱向來(lái)看,

            (1)合理寫WHERE子句,不要寫沒有WHERE的SQL語(yǔ)句。

            (2) SELECT TOP N * --沒有WHERE條件的用此替代


            四 :盡量少做重復(fù)的工作

            A、控制同一語(yǔ)句的多次執(zhí)行,特別是一些基礎(chǔ)數(shù)據(jù)的多次執(zhí)行是很多程序員很少注意的。

            B、減少多次的數(shù)據(jù)轉(zhuǎn)換,也許需要數(shù)據(jù)轉(zhuǎn)換是設(shè)計(jì)的問(wèn)題,但是減少次數(shù)是程序員可以做到的。

            C、杜絕不必要的子查詢和連接表,子查詢?cè)趫?zhí)行計(jì)劃一般解釋成外連接,多余的連接表帶來(lái)額外的開銷。

            D、合并對(duì)同一表同一條件的多次UPDATE,比如

            1. UPDATE EMPLOYEE SET FNAME='HAIWER' 
            2. WHERE EMP_ID=' VPA30890F' UPDATE EMPLOYEE SET LNAME='YANG' 
            3. WHERE EMP_ID=' VPA30890F' 

            這兩個(gè)語(yǔ)句應(yīng)該合并成以下一個(gè)語(yǔ)句

            UPDATE EMPLOYEE SET FNAME='HAIWER',LNAME='YANG' WHERE EMP_ID=' VPA30890F'

            E、UPDATE操作不要拆成DELETE操作+INSERT操作的形式,雖然功能相同,但是性能差別是很大的。

             

            五、注意臨時(shí)表和表變量的用法

            在復(fù)雜系統(tǒng)中,臨時(shí)表和表變量很難避免,關(guān)于臨時(shí)表和表變量的用法,需要注意:

            A、如果語(yǔ)句很復(fù)雜,連接太多,可以考慮用臨時(shí)表和表變量分步完成。

            B、如果需要多次用到一個(gè)大表的同一部分?jǐn)?shù)據(jù),考慮用臨時(shí)表和表變量暫存這部分?jǐn)?shù)據(jù)。

            C、如果需要綜合多個(gè)表的數(shù)據(jù),形成一個(gè)結(jié)果,可以考慮用臨時(shí)表和表變量分步匯總這多個(gè)表的數(shù)據(jù)。

            D、其他情況下,應(yīng)該控制臨時(shí)表和表變量的使用。

            E、關(guān)于臨時(shí)表和表變量的選擇,很多說(shuō)法是表變量在內(nèi)存,速度快,應(yīng)該首選表變量,但是在實(shí)際使用中發(fā)現(xiàn),

            (1)主要考慮需要放在臨時(shí)表的數(shù)據(jù)量,在數(shù)據(jù)量較多的情況下,臨時(shí)表的速度反而更快。

            (2)執(zhí)行時(shí)間段與預(yù)計(jì)執(zhí)行時(shí)間(多長(zhǎng))

            F、關(guān)于臨時(shí)表產(chǎn)生使用SELECT INTO和CREATE TABLE + INSERT INTO的選擇,一般情況下,

            SELECT INTO會(huì)比CREATE TABLE + INSERT INTO的方法快很多,

            但是SELECT INTO會(huì)鎖定TEMPDB的系統(tǒng)表SYSOBJECTS、SYSINDEXES、SYSCOLUMNS,在多用戶并發(fā)環(huán)境下,容易阻塞其他進(jìn)程,

            所以我的建議是,在并發(fā)系統(tǒng)中,盡量使用CREATE TABLE + INSERT INTO,而大數(shù)據(jù)量的單個(gè)語(yǔ)句使用中,使用SELECT INTO。

            posted on 2012-07-01 12:16 tbwshc 閱讀(959) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久91精品国产91久久麻豆| 久久夜色精品国产亚洲| 久久精品免费观看| 99久久精品国产一区二区三区 | 久久国产精品波多野结衣AV| 久久久噜噜噜久久中文字幕色伊伊| 欧美亚洲色综久久精品国产| 97久久久久人妻精品专区| 精品国产综合区久久久久久 | 无码人妻久久一区二区三区免费| 久久久久波多野结衣高潮| 伊人久久综合成人网| 天天躁日日躁狠狠久久| 青草影院天堂男人久久| 精品久久久久久久国产潘金莲| 久久国产色AV免费观看| 狠狠色伊人久久精品综合网 | 久久综合伊人77777| 久久亚洲精品中文字幕| 久久国产高清一区二区三区| 国内精品人妻无码久久久影院导航| 曰曰摸天天摸人人看久久久| 久久天天躁夜夜躁狠狠躁2022 | av色综合久久天堂av色综合在| 久久久久久亚洲Av无码精品专口| 精品久久人人爽天天玩人人妻 | 久久精品国产亚洲AV香蕉| 亚洲一本综合久久| 精品久久久噜噜噜久久久| 亚洲国产成人久久笫一页| 久久美女人爽女人爽| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲精品乱码久久久久久不卡| 一本大道久久a久久精品综合| 亚洲国产一成人久久精品| 久久综合久久综合亚洲| 久久九九久精品国产免费直播| 国产综合精品久久亚洲| 日韩乱码人妻无码中文字幕久久| 久久免费的精品国产V∧| 精品多毛少妇人妻AV免费久久|