乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      PL/SQL書寫規(guī)范

       flowerpp 2005-10-23

      一、 Sql&PL/SQL書寫規(guī)范:
      1、 語句中出現(xiàn)的所有表名、字段名全部小寫,系統(tǒng)保留字、內(nèi)置函數(shù)名、Sql保留字大寫。
      2、 連接符or、in、and、以及=、<=、>=等前后加上一個(gè)空格。
      3、 對(duì)較為復(fù)雜的sql語句加上注釋,說明算法、功能。
        注釋風(fēng)格:注釋單獨(dú)成行、放在語句前面。
          (1)   應(yīng)對(duì)不易理解的分支條件表達(dá)式加注釋;
          (2)   對(duì)重要的計(jì)算應(yīng)說明其功能;
          (3)   過長的函數(shù)實(shí)現(xiàn),應(yīng)將其語句按實(shí)現(xiàn)的功能分段加以概括性說明;
          (4)   每條SQL語句均應(yīng)有注釋說明(表名、字段名)。
          (5)  常量及變量注釋時(shí),應(yīng)注釋被保存值的含義(必須),合法取值的范圍(可選)
          (6)  可采用單行/多行注釋。(-- 或 /* */ 方式)
      4、 SQL語句的縮進(jìn)風(fēng)格
      (1)  一行有多列,超過80個(gè)字符時(shí),基于列對(duì)齊原則,采用下行縮進(jìn)
         (2)  where子句書寫時(shí),每個(gè)條件占一行,語句令起一行時(shí),以保留字或者連接符開始,連接符右對(duì)齊。
      5、 多表連接時(shí),使用表的別名來引用列。
      6、 供別的文件或函數(shù)調(diào)用的函數(shù),絕不應(yīng)使用全局變量交換數(shù)據(jù);
      7、 變量令名不能超出ORACLE的限制(30個(gè)字符),令名要規(guī)范,要用英文令名,從變量上能看到變量的作用,如
      g名稱          全局變量
      m名稱          局部變量
      c名稱          光標(biāo)
      p名稱          參數(shù)
      8、 查找數(shù)據(jù)庫表或視圖時(shí),只能取出確實(shí)需要的那些字段,不要使用*來代替所有列名。要清楚明白地使用列名,而不能使用列的序號(hào)。
      9、 功能相似的過程和函數(shù),盡量寫到同一個(gè)包中,加強(qiáng)管理。

      如例(1)

      二、 書寫優(yōu)化性能建議
       1、避免嵌套連接。例如:A = B and B = C and C = D
       2、where條件中盡量減少使用常量比較,改用主機(jī)變量
       3、系統(tǒng)可能選擇基于規(guī)則的優(yōu)化器,所以將結(jié)果集返回?cái)?shù)據(jù)量小的表作為驅(qū)動(dòng)表(from后邊最后一個(gè)表)。
       4、大量的排序操作影響系統(tǒng)性能,所以盡量減少order by和group by排序操作。

      如必須使用排序操作,請(qǐng)遵循如下規(guī)則:
      (1) 排序盡量建立在有索引的列上。
      (2) 如結(jié)果集不需唯一,使用union all代替union。
      5、索引的使用。
      (1) 盡量避免對(duì)索引列進(jìn)行計(jì)算。如對(duì)索引列計(jì)算較多,請(qǐng)?zhí)嵴?qǐng)系統(tǒng)管理員建立函數(shù)索引。
      (2) 盡量注意比較值與索引列數(shù)據(jù)類型的一致性。
      (3) 對(duì)于復(fù)合索引,SQL語句必須使用主索引列
      (4) 索引中,盡量避免使用NULL。
      (5) 對(duì)于索引的比較,盡量避免使用NOT=(!=)
      (6) 查詢列和排序列與索引列次序保持一致

       6、盡量避免相同語句由于書寫格式的不同,而導(dǎo)致多次語法分析,盡量使用Bind變量。
            7、盡量使用共享的SQL語句。
      8、查詢的WHERE過濾原則,應(yīng)使過濾記錄數(shù)最多的條件放在最前面。
            9、任何對(duì)列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫函數(shù)、計(jì)算表達(dá)式等等,查詢時(shí)要盡可能將操作移至等號(hào)右邊。
      10、in、or子句常會(huì)使用工作表,使索引失效;如果不產(chǎn)生大量重復(fù)值,可以考慮把子句拆開;拆開的子句中應(yīng)該包含索引。

      三、其他經(jīng)驗(yàn)性規(guī)則
         1、盡量少用嵌套查詢。如必須,請(qǐng)用not exist代替not in子句。如例(2)
       2、用多表連接代替EXISTS子句。如例(3)
       3、少用DISTINCT,用EXISTS代替 如例(4)
       4、使用UNION ALL、MINUS、INTERSECT提高性能
       5、使用ROWID提高檢索速度。對(duì)SELECT得到的單行記錄,需進(jìn)行DELETE、UPDATE操作時(shí),使用ROWID將會(huì)使效率大大提高。
       6、使用優(yōu)化線索機(jī)制進(jìn)行訪問路徑控制。
       7、使用cursor時(shí),顯示光標(biāo)優(yōu)于隱式光標(biāo)

      本規(guī)范示例:
       例一:
          SELECT aka042 -- 單位繳費(fèi)劃入個(gè)人帳戶比例
          INTO prm_aaa043
          FROM ka01 --醫(yī)療保險(xiǎn)單位繳費(fèi)劃入個(gè)人帳戶比例分段信息
          WHERE akc021 = rec_kc01.akc021 -- 醫(yī)療人員類別
          AND aka041 >= rec_kc01.akc023 -- 年齡上限
          AND aka040 <= rec_kc01.akc023 -- 年齡下限
          AND aae030 <= prm_date -- 開始時(shí)間
          AND ( aae031 >= prm_date OR aae031 IS NULL ); -- 終止時(shí)間
         
       例二:  
         X SELECT ......
          FROM emp
          WHERE dept_no NOT IN ( SELECT dept_no
          FROM dept
          WHERE dept_cat=‘A‘);
         
         O SELECT ......
          FROM emp e
          WHERE NOT EXISTS ( SELECT ‘X‘
          FROM dept
          WHERE dept_no=e.dept_no
          AND dept_cat=‘A‘);

       例三:
         X SELECT ......
                 FROM emp
          WHERE EXISTS ( SELECT ‘X‘
          FROM dept
          WHERE dept_no=e.dept_no
          AND dept_cat=‘A‘);
         
         O SELECT ......
          FROM emp e,dept d
          WHERE e.dept_no=d.dept_no
          AND dept_cat=‘A‘;
       
       例四:
         X SELECT DISTINCT d.dept_code,d.dept_name
          FROM dept d ,emp e
          WHERE e.dept_code=d.dept_code;
         
         O SELECT dept_code,dept_name
          FROM dept d
          WHERE EXISTS ( SELECT ‘X‘
          FROM emp e
          WHERE e.dept_code=d.dept_code);


      注釋范例
      過程注釋:
      過程都以sp_開頭,注意過程名稱要符合令名要求
      /**************************************************************************
      name:sp_Write_log
      parameter:p_textContext in varchar2 參數(shù)描述
      create date:2003-04-1
      creater:chen jiping
      desc:過程總功能描述
      ****************************************************************************/
      函數(shù)注釋
      函數(shù)以f開頭,令名符合令名標(biāo)準(zhǔn)
      /**************************************************************************
      name:f_Get_JobId
      parameter:p_Name in varchar2 參數(shù)描述
      return number:返回值描述
      create date:2003-04-1
      creater:chen jiping
      desc:函數(shù)總功能描述
      ****************************************************************************/

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多