SQL 編碼規範,sql編碼規範

來源:互聯網
上載者:User

SQL 編碼規範,sql編碼規範

1. 必須對錶起別名,方便調查表用了哪些列


比如 select owner,object_id,name from a,b where a.id=b.id;

如果不對錶取別名,我怎麼知道你訪問的列是哪個表的。如果SQL幾百行,如果SQL表關聯很多,去死吧。


2. 資料庫物件 命名


表             首碼/尾碼 T_XXX

視圖         首碼/尾碼  V_XXX

物化視圖  首碼/尾碼 MV_XXX

索引         IDX_列名


特殊表

資料倉儲 事實表  _FACT

資料倉儲 維度資料表  _DIM

業務中間表  _TMP

日誌表      _LOG  


才用這種命名規範,方便不熟悉業務的DBA,開發人員更快的上手



3. 嚴禁標量子查詢(分頁可以寫)


select (select ... from a where a.id=b.id) from b;  ---這種就叫標量子查詢


假如 b 返回100w 那麼 a可能被掃描 100w次 然後你懂的 死了


標量子查詢 全部改寫為 select ... from a left join b .....



4. 嚴禁sql套自訂函數,包,預存程序


道理跟 標量子查詢一樣


5. 嚴禁視圖中select包含ROWNUM create or replace view ....select rownum


影響謂詞推入+視圖合并


6. 嚴禁視圖 裡面有 order by


幹擾執行計畫


7. 嚴禁視圖套用超過2個 ,因為最裡面的視圖改了可能影響最外面的 高內聚 低耦合


如果最裡面的視圖出問題,那麼調用這個視圖的SQL全出問題,改寫代碼都改死你


8. in exists ,not in not exists 改寫為 with as (子查詢)


這個不說,來報名吧


9. 分頁不能有 distinct, group by ,union /union all,order by 只能一個表


來報名吧,不說為啥這樣


10. 關聯更新,改寫為merge 或者改寫為利用 rowid更新


11. 禁止對join列用函數 比如 where trunc(時間)=b.時間


12.注意隱式轉化


13. 省略....報名可得

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.