国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

優(yōu)化,提高速度

2024-07-21 02:39:13
字體:
供稿:網(wǎng)友

  最近的一個項目,需要對幾個超過千萬的表進行計算,JION,復(fù)雜查詢等操作,覺得SQL語句的優(yōu)化非常重要,把一些心得寫得出,希望同行們能糾正我的錯誤。
  
  ---與SQL優(yōu)化(包括內(nèi)存空間)有關(guān)一些INIT參數(shù)
  OPTIMIZER_MODE
  SORT_AREA
  SHARED_POOL_SZIE
  
  ---一些不使用索引的情況
  1,NOT IN
  2,NOT BETWEEN
  3,LIKE(第一個字符非%號除外,如name like '李%')
  4,<>
  5,IS NULL/IS NOT NULL
  6,查詢的字段加函數(shù)
  7,在8I中,多字段的組合索引(A,B,C),select * from ** wher B='33',則索引也不會用。(按前綴式規(guī)則使用索引除外,如A='33' and B='33' A='33' A='33' and C='33')
  注:9I除外
  
  ---查詢語句比較優(yōu)化的寫法:
  1,加HINT,改變其執(zhí)行路徑
  2,可能使用exsit的地方就盡量不用IN,可以使用not exiist的地方,盡量不要用not in
  3,兩個表進行JION時,大表放在前面,JION字段建索引
  4,盡量用其它寫法,取代NOT IN,如a,b表同結(jié)構(gòu),數(shù)據(jù)量很大,則代替select * from a where a.c not in (select c from b )
  的語句有
  a)select a.* from a, b where a.c = b.c + and b.c is null(據(jù)說速度比原寫法提高30倍)
  b)select * from a minus select a.* from a,b where a.c=b.c (速度其次)
  c)select * from a where not exist(select a.* from a,b where a.c=b.c) (也不錯)
  
  
  5,動態(tài)SQL中,盡量多用execute immediate,而少用DBMS_SQL,前者綜合效率優(yōu)于后者
  
  6,對于很復(fù)雜的查詢語句,可以建立臨時表進行緩沖(關(guān)于臨時表的解釋與使用,還希望同行告訴我在哪里有。。。)
  
  7,COUNT(*)與COUNT(某列)一樣進行全表掃描Fast Full Index Scan,速度差不多
  
  8,經(jīng)常同時存取多列,或經(jīng)常使用GROUP BY的SQL語句,最好對表的GROUP字段建立組合索引。組合索引要盡量使要害查詢形成索引覆蓋,其前導(dǎo)列一定是使用最頻繁的列。
  
  9,對于字段取值單一(如性別字段只有男與女),而經(jīng)常在性別上做查詢,則建立位圖索引。
  注:BITMAP INDEX通常用于DSS,假如你的系統(tǒng)是OLTP,DML操作將LOCK整個BITMAP SEGMENT,因此只在DSS下 考慮BITMAP INDEX

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 潮安县| 容城县| 汉中市| 洱源县| 分宜县| 浦江县| 临澧县| 临泽县| 伊金霍洛旗| 钦州市| 筠连县| 隆尧县| 贵州省| 思南县| 扎鲁特旗| 都兰县| 安泽县| 富民县| 台州市| 莒南县| 汤原县| 萨嘎县| 中方县| 黔西县| 崇左市| 长阳| 黑龙江省| 云梦县| 深圳市| 屏山县| 虹口区| 滕州市| 宣威市| 庐江县| 灵寿县| 清丰县| 潞城市| 多伦县| 宁都县| 北宁市| 邮箱|