成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

我的oracle筆記六(oracle優(yōu)化方面)

瀏覽:180日期:2023-11-19 17:22:52
1. 查詢正在執(zhí)行語句的執(zhí)行計劃(也就是實際語句執(zhí)行計劃) select * from v$sql_plan where hash_value = (select sql_hash_value from v$session where sid = 1111); 其中id和parent_id表示了執(zhí)行數(shù)的結(jié)構(gòu),數(shù)值最大的為最先執(zhí)行 比如ID; PARENT_ID;-------------;0;1;02;13;24;35;46;3;------------則執(zhí)行計劃樹為 0 1 2 3 6;;4; 52.如何設(shè)置自動跟蹤用system登錄執(zhí)行$Oracle_HOME/rdbms/admin/utlXPlan.sql創(chuàng)建計劃表執(zhí)行$ORACLE_HOME/sqlplus/admin/plustrce.sql創(chuàng)建plustrace角色假如想計劃表讓每個用戶都能使用,則SQL>create public synonym plan_table for plan_table;SQL> grant all on plan_table to public;假如想讓自動跟蹤的角色讓每個用戶都能使用,則SQL> grant plustrace to public;通過如下語句開啟/停止跟蹤SET AUTOTRACE ON OFF ON EXPLAIN ON STATISTICS TRACEONLY TRACEONLY EXPLAIN3.如何跟蹤自己的會話或者是別人的會話跟蹤自己的會話很簡單Alter session set sql_trace truefalseOrExec dbms_session.set_sql_trace(TRUE);假如跟蹤別人的會話,需要調(diào)用一個包exec dbms_system.set_sql_trace_in_session(sid,serial#,truefalse)跟蹤的信息在user_dump_dest 目錄下可以找到或通過如下腳本獲得文件名稱(適用于Win環(huán)境,假如是unix需要做一定修改)SELECT p1.value''p2.value'_ora_'p.spid'.ora' filenameFROMv$process p,v$session s,v$parameter p1,v$parameter p2WHERE p1.name = 'user_dump_dest'AND p2.name = 'db_name'AND p.addr = s.paddrAND s.audsid = USERENV ('SESSIONID')最后,可以通過Tkprof來解析跟蹤文件,如Tkprof 原文件 目標文件 sys=n4.怎么設(shè)置整個數(shù)據(jù)庫系統(tǒng)跟蹤其實文檔上的alter system set sql_trace=true是不成功的但是可以通過設(shè)置事件來完成這個工作,作用相等alter system set events'10046 trace name context forever,level 1';假如關(guān)閉跟蹤,可以用如下語句alter system set events'10046 trace name context off';其中的level 1與上面的8都是跟蹤級別level 1:跟蹤SQL語句,等于sql_trace=truelevel 4:包括變量的具體信息level 8:包括等待事件level 12:包括綁定變量與等待事件5.怎么樣根據(jù)OS進程快速獲得DB進程信息與正在執(zhí)行的語句有些時候,我們在OS上操作,象TOP之后我們得到的OS進程,怎么快速根據(jù)OS信息獲得DB信息呢?我們可以編寫如下腳本:$more whoit.sh#!/bin/shsqlplus /nolog 100,cascade=> TRUE);dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);這是對命令與工具包的一些總結(jié)<1>、對于分區(qū)表,建議使用DBMS_STATS,而不是使用Analyze語句。 a) 可以并行進行,對多個用戶,多個Table b) 可以得到整個分區(qū)表的數(shù)據(jù)和單個分區(qū)的數(shù)據(jù)。 c) 可以在不同級別上Compute Statistics:單個分區(qū),子分區(qū),全表,所有分區(qū) d) 可以倒出統(tǒng)計信息 e) 可以用戶自動收集統(tǒng)計信息 <2>、DBMS_STATS的缺點 a) 不能Validate StrUCture b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,這兩個仍然需要使用Analyze語句。 c) DBMS_STATS 默認不對索引進行Analyze,因為默認Cascade是False,需要手工指定為True <3>、對于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS來收集信息。6.怎么樣快速重整索引通過rebuild語句,可以快速重整或移動索引到別的表空間rebuild有重建整個索引數(shù)的功能,可以在不刪除原始索引的情況下改變索引的存儲參數(shù)語法為alter index index_name rebuild tablespace ts_namestorage(......);假如要快速重建整個用戶下的索引,可以用如下腳本,當(dāng)然,需要根據(jù)你自己的情況做相應(yīng)修改SQL> set heading offSQL> set feedback offSQL> spool d:index.sqlSQL> SELECT 'alter index ' index_name ' rebuild ''tablespace INDEXES storage(initial 256K next 256K pctincrease 0);'FROM all_indexesWHERE ( tablespace_name != 'INDEXES'OR next_extent != ( 256 * 1024 ))AND owner = USERSQL>spool off另外一個合并索引的語句是alter index index_name coalesce,這個語句僅僅是合并索引中同一級的leaf block消耗不大,對于有些索引中存在大量空間浪費的情況下,有一些作用。7.如何使用Hint提示在select/delete/update后寫/*+ hint */如 select /*+ index(TABLE_NAME INDEX_NAME) */ col1...注重/*和+之間不能有空格如用hint指定使用某個索引select /*+ index(cbotab) */ col1 from cbotab;select /*+ index(cbotab cbotab1) */ col1 from cbotab;select /*+ index(a cbotab1) */ col1 from cbotab a;其中TABLE_NAME是必須要寫的,且假如在查詢中使用了表的別名,在hint也要用表的別名來代替表名;INDEX_NAME可以不必寫,Oracle會根據(jù)統(tǒng)計值選一個索引;假如索引名或表名寫錯了,那這個hint就會被忽略;8.怎么樣快速復(fù)制表或者是插入數(shù)據(jù)快速復(fù)制表可以指定Nologging選項如:Create table t1 nologging as select * from t2;快速插入數(shù)據(jù)可以指定append提示,但是需要注重noarchivelog模式下,默認用了append就是nologging模式的。 在archivelog下,需要把表設(shè)置程Nologging模式。如insert /*+ append */ into t1 select * from t2注重:假如在9i環(huán)境中并設(shè)置了FORCE LOGGING,則以上操作是無效的,并不會加快,當(dāng)然,可以通過如下語句設(shè)置為NO FORCE LOGGING。Alter database no force logging;是否開啟了FORCE LOGGING,可以用如下語句查看SQL> select force_logging from v$database;9.怎么避免使用特定索引在很多時候,Oracle會錯誤的使用索引而導(dǎo)致效率的明顯下降,我們可以使用一點點技巧而避免使用不該使用的索引,如:表test,有字段a,b,c,d,在a,b,c上建立聯(lián)合索引inx_a(a,b,c),在b上單獨建立了一個索引Inx_b(b)。在正常情況下,where a=? and b=? and c=?會用到索引inx_a,where b=?會用到索引inx_b但是,where a=? and b=? and c=? group by b會用到哪個索引呢?在分析數(shù)據(jù)不正確(很長時間沒有分析)或根本沒有分析數(shù)據(jù)的情況下,oracle往往會使用索引inx_b。通過執(zhí)行計劃的分析,這個索引的使用,將大大耗費查詢時間。當(dāng)然,我們可以通過如下的技巧避免使用inx_b,而使用inx_a。where a=? and b=? and c=? group by b'' --假如b是字符where a=? and b=? and c=? group by b+0 --假如b是數(shù)字通過這樣簡單的改變,往往可以是查詢時間提交很多倍當(dāng)然,我們也可以使用no_index提示,相信很多人沒有用過,也是一個不錯的方法:select /*+ no_index(t,inx_b) */ * from test twhere a=? and b=? and c=? group by b舉例:本來在CM_USER上有索引IDX_CM_USER4(ACC_ID)和IDX_CM_USER8(BILL_ID),可是執(zhí)行如下語句的時候很慢。select * from CM_USER where; acc_id =1200007175 and user_status>0 and bill_id like '13%' order by acc_id,bill_id 用explain分析,發(fā)現(xiàn)執(zhí)行計劃是用IDX_CM_USER8.如下查詢select * from user_indexes where table_name ='CM_USER' 發(fā)現(xiàn)IDX_CM_USER8沒有分析過。用下面語句執(zhí)行計劃改變select /*+INDEX(CM_USER IDX_CM_USER4)*/* from CM_USER where; acc_id =1200007175 and user_status>0 and bill_id like '13%' order by acc_id,bill_id或者分析索引exec dbms_stats.gather_index_stats(ownname => 'QACS1',indname => 'IDX_CM_USER8',estimate_percent => 5 );可以發(fā)現(xiàn)執(zhí)行計劃恢復(fù)正常。10.Oracle什么時候會使用跳躍式索引掃描這是9i的一個新特性跳躍式索引掃描(Index Skip Scan).例如表有索引index(a,b,c),當(dāng)查詢條件為where b=?的時候,可能會使用到索引index(a,b,c)如,執(zhí)行計劃中出現(xiàn)如下計劃:INDEX (SKIP SCAN) OF 'TEST_IDX' (NON-UNIQUE)Oracle的優(yōu)化器(這里指的是CBO)能對查詢應(yīng)用Index Skip Scans至少要有幾個條件:<1> 優(yōu)化器認為是合適的。<2> 索引中的前導(dǎo)列的唯一值的數(shù)量能滿足一定的條件(如重復(fù)值很多)。<3> 優(yōu)化器要知道前導(dǎo)列的值分布(通過分析/統(tǒng)計表得到)。<4> 合適的SQL語句等。11.怎么樣創(chuàng)建使用虛擬索引可以使用nosegment選項,如create index virtual_index_name on table_name(col_name) nosegment;假如在哪個session需要測試虛擬索引,可以利用隱含參數(shù)來處理alter session set '_use_nosegment_indexes' = true;就可以利用explain plan for select ……來看虛擬索引的效果利用@$ORACLE_HOME/rdbms/admin/utlxpls查看執(zhí)行計劃最后,根據(jù)需要,我們可以刪除虛擬索引,如普通索引一樣drop index virtual_index_name;注重:虛擬索引并不是物理存在的,所以虛擬索引并不等同于物理索引,不要用自動跟蹤去測試虛擬索引,因為那是實際執(zhí)行的效果,是用不到虛擬索引的。12.怎樣監(jiān)控?zé)o用的索引Oracle 9i以上,可以監(jiān)控索引的使用情況,假如一段時間內(nèi)沒有使用的索引,一般就是無用的索引語法為:開始監(jiān)控:alter index index_name monitoring usage;檢查使用狀態(tài):select * from v$object_usage;停止監(jiān)控:alter index index_name nomonitoring usage;當(dāng)然,假如想監(jiān)控整個用戶下的索引,可以采用如下的腳本:set heading offset echo offset feedback offset pages 10000spool start_index_monitor.sqlSELECT 'alter index 'owner'.'index_name' monitoring usage;'FROM dba_indexesWHERE owner = USER; spool off set heading onset echo onset feedback on------------------------------------------------set heading offset echo offset feedback offset pages 10000spool stop_index_monitor.sqlSELECT 'alter index 'owner'.'index_name' nomonitoring usage;'FROM dba_indexesWHERE owner = USER; spool off set heading onset echo onset feedback on13.怎么樣能固定我的執(zhí)行計劃可以使用OUTLINE來固定SQL語句的執(zhí)行計劃用如下語句可以創(chuàng)建一個OUTLINECreate oe replace outline OutLn_Name onSelect Col1,Col2 from Tablewhere .......假如要刪除Outline,可以采用Drop Outline OutLn_Name;對于已經(jīng)創(chuàng)建了的OutLine,存放在OUTLN用戶的OL$HINTS表下面對于有些語句,你可以使用update outln.ol$hints來更新outline如update outln.ol$hints(ol_name,'TEST1','TEST2','TEST2','TEST1)where ol_name in ('TEST1','TEST2');這樣,你就把Test1 OUTLINE與Test2 OUTLINE互換了假如想利用已經(jīng)存在的OUTLINE,需要設(shè)置以下參數(shù)Alter system/session set Query_rewrite_enabled = trueAlter system/session set use_stored_outlines = true14.v$sysstat中的class分別代表什么統(tǒng)計類別1 代表事例活動2 代表Redo buffer活動4 代表鎖8 代表數(shù)據(jù)緩沖活動16 代表OS活動32 代表并行活動64 代表表訪問128 代表調(diào)試信息15.怎么殺掉特定的數(shù)據(jù)庫會話Alter system kill session 'sid,serial#';或者alter system disconnect session 'sid,serial#' immediate; 在win上,還可以采用oracle提供的orakill殺掉一個線程(其實就是一個Oracle進程)在Linux/Unix上,可以直接利用kill殺掉數(shù)據(jù)庫進程對應(yīng)的OS進程16.怎么快速查找鎖與鎖等待數(shù)據(jù)庫的鎖是比較耗費資源的,非凡是發(fā)生鎖等待的時候,我們必須找到發(fā)生等待的鎖,有可能的話,殺掉該進程。這個語句將查找到數(shù)據(jù)庫中所有的DML語句產(chǎn)生的鎖,還可以發(fā)現(xiàn),任何DML語句其實產(chǎn)生了兩個鎖,一個是表鎖,一個是行鎖。可以通過alter system kill session ‘sid,serial#’來殺掉會話SELECT /*+ rule */ s.username,decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',NULL) LOCK_LEVEL,o.owner,o.object_name,o.object_type,s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuserFROM v$session s,v$lock l,dba_objects oWHERE l.sid = s.sidAND l.id1 = o.object_id(+)AND s.username is NOT NULL假如發(fā)生了鎖等待,我們可能更想知道是誰鎖了表而引起誰的等待以下的語句可以查詢到誰鎖了表,而誰在等待。SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))l.oracle_username User_name,o.owner,o.object_name,o.object_type,s.sid,s.serial#FROM v$locked_object l,dba_objects o,v$session sWHERE l.object_id=o.object_idAND l.session_id=s.sidORDER BY o.object_id,xidusn DESC以上查詢結(jié)果是一個樹狀結(jié)構(gòu),假如有子節(jié)點,則表示有等待發(fā)生。假如想知道鎖用了哪個回滾段,還可以關(guān)聯(lián)到V$rollname,其中xidusn就是回滾段的USN[Q] 如何有效的刪除一個大表(extent數(shù)很多的表)[A] 一個有很多(100k)extent的表,假如只是簡單地用drop table的話,會很大量消耗CPU(Oracle要對fet$、uet$數(shù)據(jù)字典進行操作),可能會用上幾天的時間,較好的方法是分多次刪除extent,以減輕這種消耗:1. truncate table big-table reuse storage;2. alter table big-table deallocate unused keep 2000m ( 原來大小的n-1/n);3. alter table big-table deallocate unused keep 1500m ;....4. drop table big-table;17.如何收縮臨時數(shù)據(jù)文件的大小9i以下版本采用ALTER DATABASE DATAFILE 'file name' RESIZE 100M類似的語句9i以上版本采用ALTER DATABASE TEMPFILE 'file name' RESIZE 100M注重,臨時數(shù)據(jù)文件在使用時,一般不能收縮,除非關(guān)閉數(shù)據(jù)庫或斷開所有會話,停止對臨時數(shù)據(jù)文件的使用。18.怎么清理臨時段可以使用如下辦法<1>、 使用如下語句查看一下認誰在用臨時段SELECT username,sid,serial#,sql_address,machine,program,tablespace,segtype, contents FROM v$session se,v$sort_usage suWHERE se.saddr=su.session_addr <2>、 那些正在使用臨時段的進程SQL>Alter system kill session 'sid,serial#';<3>、把TEMP表空間回縮一下SQL>Alter tablespace TEMP coalesce;還可以使用診斷事件<1>、 確定TEMP表空間的ts#SQL> select ts#, name FROM v$tablespace;TS# NAME ----------------------- 0 SYSYEM 1 RBS 2 USERS 3* TEMP ...<2>、 執(zhí)行清理操作alter session set events 'immediate trace name DROP_SEGMENTS level TS#+1'說明: temp表空間的TS# 為 3*, So TS#+ 1= 4假如想清除所有表空間的臨時段,則 TS# = 214748364719.怎么樣dump數(shù)據(jù)庫內(nèi)部結(jié)構(gòu),如上面顯示的控制文件的結(jié)構(gòu)[A]常見的有1、分析數(shù)據(jù)文件塊,轉(zhuǎn)儲數(shù)據(jù)文件n的塊malter system dump datafile n block m2、分析日志文件alter system dump logfile logfilename;3、分析控制文件的內(nèi)容alter session set events 'immediate trace name CONTROLF level 10'4、分析所有數(shù)據(jù)文件頭alter session set events 'immediate trace name FILE_HDRS level 10'5、分析日志文件頭alter session set events 'immediate trace name REDOHDR level 10'6、分析系統(tǒng)狀態(tài),最好每10分鐘一次,做三次對比alter session set events 'immediate trace name SYSTEMSTATE level 10'7、分析進程狀態(tài)alter session set events 'immediate trace name PROCESSSTATE level 10' 8、分析Library Cache的具體情況alter session set events 'immediate trace name library_cache level 10'20.如何獲得所有的事件代碼事件代碼范圍一般從10000 to 10999,以下列出了這個范圍的事件代碼與信息SET SERVEROUTPUT ONDECLARE err_msg VARCHAR2(120);BEGINdbms_output.enable (1000000);FOR err_num IN 10000..10999LOOPerr_msg := SQLERRM (-err_num);IF err_msg NOT LIKE '%Message 'err_num' not found%' THENdbms_output.put_line (err_msg);END IF;END LOOP;END;/在Unix系統(tǒng)上,事件信息放在一個文本文件里 $ORACLE_HOME/rdbms/mesg/oraus.msg可以用如下腳本查看事件信息 event=10000while [ $event -ne 10999 ]doevent=`expr $event + 1`oerr ora $eventdone對于已經(jīng)確保的/正在跟蹤的事件,可以用如下腳本獲得SET SERVEROUTPUT ONDECLAREl_level NUMBER;BEGINFOR l_event IN 10000..10999LOOPdbms_system.read_ev (l_event,l_level);IF l_level > 0 THENdbms_output.put_line ('Event 'TO_CHAR (l_event)' is set at level 'TO_CHAR (l_level));END IF;END LOOP;END;/21.什么是STATSPACK,我怎么使用它?Statspack是Oracle 8i以上提供的一個非常好的性能監(jiān)控與診斷工具,基本上全部包含了BSTAT/ESTAT的功能,更多的信息可以參考附帶文檔$ORACLE_HOME/rdbms/admin/spdoc.txt。 安裝Statspack: cd $ORACLE_HOME/rdbms/adminsqlplus '/ as sysdba' @spdrop.sql -- 卸載,第一次可以不需要sqlplus '/ as sysdba' @spcreate.sql -- 需要根據(jù)提示輸入表空間名使用Statspack: sqlplus perfstat/perfstatexec statspack.snap; -- 進行信息收集統(tǒng)計,每次運行都將產(chǎn)生一個快照號-- 獲得快照號,必須要有兩個以上的快照,才能生成報表select SNAP_ID, SNAP_TIME from STATS$SNAPSHOT; @spreport.sql -- 輸入需要查看的開始快照號與結(jié)束快照號其他相關(guān)腳本s: spauto.sql - 利用dbms_job提交一個作業(yè),自動的進行STATPACK的信息收集統(tǒng)計 sppurge.sql - 清除一段范圍內(nèi)的統(tǒng)計信息,需要提供開始快照與結(jié)束快照號sptrunc.sql - 清除(truncate)所有統(tǒng)計信息22. SQL語句的優(yōu)化方法<1> /*+ALL_ROWS*/ 表明對語句塊選擇基于開銷的優(yōu)化方法,并獲得最佳吞吐量,使資源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP';;<2>. /*+FIRST_ROWS*/ 表明對語句塊選擇基于開銷的優(yōu)化方法,并獲得最佳響應(yīng)時間,使資源消耗最小化. 例如: SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE;EMP_NO='CCBZZP';;<3>. /*+CHOOSE*/ 表明假如數(shù)據(jù)字典中有訪問表的統(tǒng)計信息,將基于開銷的優(yōu)化方法,并獲得最佳的吞吐量; 表明假如數(shù)據(jù)字典中沒有訪問表的統(tǒng)計信息,將基于規(guī)則開銷的優(yōu)化方法; 例如: SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP';;<4>. /*+RULE*/ 表明對語句塊選擇基于規(guī)則的優(yōu)化方法. 例如: SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP';;<5>. /*+FULL(TABLE)*/ 表明對表選擇全局掃描的方法. 例如: SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='CCBZZP';;<6>. /*+ROWID(TABLE)*/ 提示明確表明對指定表根據(jù)ROWID進行訪問. 例如: SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID>='AAAAAAAAAAAAAA' AND EMP_NO='CCBZZP';;<7>. /*+CLUSTER(TABLE)*/ 提示明確表明對指定表選擇簇掃描的訪問方法,它只對簇對象有效. 例如: SELECT; /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;;<8>. /*+INDEX(TABLE INDEX_NAME)*/ 表明對表選擇索引的掃描方法. 例如: SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE;BSEMPMS */; FROM BSEMPMS WHERE SEX='M';;<9>. /*+INDEX_ASC(TABLE INDEX_NAME)*/ 表明對表選擇索引升序的掃描方法. 例如: SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */; FROM BSEMPMS WHERE DPT_NO='CCBZZP';;<10>. /*+INDEX_COMBINE*/ 為指定表選擇位圖訪問路經(jīng),假如INDEX_COMBINE中沒有提供作為參數(shù)的索引,將選擇出位圖索引的 布爾組合方式. 例如: SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS WHERE SAL<5000000 AND HIREDATE<SYSDATE;;<11>. /*+INDEX_JOIN(TABLE INDEX_NAME)*/ 提示明確命令優(yōu)化器使用索引作為訪問路徑. 例如: SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE FROM BSEMPMS WHERE SAL<60000;;<12>. /*+INDEX_DESC(TABLE INDEX_NAME)*/ 表明對表選擇索引降序的掃描方法. 例如: SELECT /*+INDEX_DESC(BSEMPMS PK_BSEMPMS) */; FROM BSEMPMS WHERE;DPT_NO='CCBZZP';;<13>. /*+INDEX_FFS(TABLE INDEX_NAME)*/ 對指定的表執(zhí)行快速全索引掃描,而不是全表掃描的辦法. 例如: SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';;<14>. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/ 提示明確進行執(zhí)行規(guī)劃的選擇,將幾個單列索引的掃描合起來. 例如: SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='CCBZZP' AND DPT_NO='TDC306';;<15>. /*+USE_CONCAT*/ 對查詢中的WHERE后面的OR條件進行轉(zhuǎn)換為UNION ALL的組合查詢. 例如: SELECT /*+USE_CONCAT*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';;<16>. /*+NO_EXPAND*/ 對于WHERE后面的OR 或者IN-LIST的查詢語句,NO_EXPAND將阻止其基于優(yōu)化器對其進行擴展. 例如: SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE; DPT_NO='TDC506' AND SEX='M';;<17>. /*+NOWRITE*/ 禁止對查詢塊的查詢重寫操作.;<18>. /*+REWRITE*/ 可以將視圖作為參數(shù).;<19>. /*+MERGE(TABLE)*/ 能夠?qū)σ晥D的各個查詢進行相應(yīng)的合并. 例如: SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO ,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SAL>V.AVG_SAL;;<20>. /*+NO_MERGE(TABLE)*/ 對于有可合并的視圖不再合并. 例如: SELECT /*+NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO ,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SAL>V.AVG_SAL; <21>. /*+ORDERED*/ 根據(jù)表出現(xiàn)在FROM中的順序,ORDERED使ORACLE依此順序?qū)ζ溥B接. 例如: SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;;<22>. /*+USE_NL(TABLE)*/ 將指定表與嵌套的連接的行源進行連接,并把指定表作為內(nèi)部表. 例如: SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;;<23>. /*+USE_MERGE(TABLE)*/ 將指定的表與其他行源通過合并排序連接方式連接起來. 例如: SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;;<24>. /*+USE_HASH(TABLE)*/ 將指定的表與其他行源通過哈希連接方式連接起來. 例如: SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;;<25>. /*+DRIVING_SITE(TABLE)*/ 強制與ORACLE所選擇的位置不同的表進行查詢執(zhí)行. 例如: SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;;<26>. /*+LEADING(TABLE)*/ 將指定的表作為連接次序中的首表. <27>. /*+CACHE(TABLE)*/ 當(dāng)進行全表掃描時,CACHE提示能夠?qū)⒈淼臋z索塊放置在緩沖區(qū)緩存中最近最少列表LRU的最近使用端 例如: SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM; BSEMPMS;;<28>. /*+NOCACHE(TABLE)*/ 當(dāng)進行全表掃描時,CACHE提示能夠?qū)⒈淼臋z索塊放置在緩沖區(qū)緩存中最近最少列表LRU的最近使用端 例如: SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM; BSEMPMS;;<29>. /*+APPEND*/ 直接插入到表的最后,可以提高速度. insert /*+append*/ into test1; select * from test4 ; insert /*+append */ into emp nologging ;<30>. /*+NOAPPEND*/ 通過在插入語句生存期內(nèi)停止并行模式來啟動常規(guī)插入.insert /*+noappend*/ into test1; select * from test4 ;<31>.parallel direct-load insert sql> alter session enable parallel dml; sql> insert /*+parallel(emp,2) */ into emp nologging sql> select * from emp_old;
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
成人精品视频一区二区三区| 欧美激情一区二区三区全黄| 2024国产精品| 日本欧美加勒比视频| 国产精品久久一区二区三区| 国产精品家庭影院| 黄色工厂这里只有精品| 欧美国产精品中文字幕| 午夜视频精品| 国产精品久久久久久亚洲伦| 欧美日韩精品伦理作品在线免费观看 | 中文字幕不卡三区| 91亚洲男人天堂| 久久精品亚洲一区二区三区浴池| 99re在线视频这里只有精品| 精品成人a区在线观看| 97精品久久久久中文字幕| 亚洲精品一区二区三区香蕉| 99久久久无码国产精品| 337p粉嫩大胆噜噜噜噜噜91av | 最新国产乱人伦偷精品免费网站| 国产精品国产精品国产专区不蜜| 欧美人成在线| 中文字幕在线观看不卡| 在线播放亚洲| 亚洲欧美日韩成人高清在线一区| 激情综合中文娱乐网| 亚洲激情校园春色| 亚洲欧美久久| 美女网站视频久久| 日韩一区二区精品葵司在线| 91蜜桃在线观看| 国产精品看片你懂得| 一区二区三区免费看| 爽好多水快深点欧美视频| 欧美性生活大片视频| 国产精品白丝av| 久久一夜天堂av一区二区三区| 欧美日韩免费观看一区=区三区| 国产精品久久久久影视| 一区二区av| 日本91福利区| 欧美mv日韩mv亚洲| 欧美破处大片在线视频| 亚洲另类在线制服丝袜| 色哟哟在线观看一区二区三区| 国内精品国产成人国产三级粉色| 欧美成人r级一区二区三区| 欧美福利影院| 日韩一区中文字幕| 日本久久电影网| 成人性生交大片免费看视频在线| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲综合好骚| 国产福利一区在线观看| 久久久www免费人成精品| 亚洲成色最大综合在线| 天堂成人免费av电影一区| 91精品国产综合久久福利软件 | 日本欧美一区二区三区乱码| 日韩小视频在线观看专区| 欧美视频网站| 日韩av不卡在线观看| 欧美va亚洲va国产综合| 日韩午夜在线电影| 激情五月激情综合网| 久久久国产精品麻豆| 亚洲免费播放| 国内精品久久久久影院薰衣草 | 国产亚洲欧洲| 玖玖九九国产精品| 久久只精品国产| 一本色道久久精品| 狠狠色丁香婷综合久久| 久久精品欧美日韩| 裸体一区二区| 成人aa视频在线观看| 一区二区三区四区在线| 欧美精品日韩一本| 精品999在线观看| 狠狠色狠狠色综合系列| 国产精品情趣视频| 欧美日韩国产美女| 狠色狠色综合久久| 久久成人麻豆午夜电影| 中文成人综合网| 欧美性大战久久| 国产精品播放| 国产一区二区三区免费看| 亚洲欧洲成人精品av97| 欧美精品18+| 一本久道久久综合狠狠爱| 国产成人一级电影| 亚洲欧美国产高清| 制服视频三区第一页精品| 一本色道久久99精品综合| 国产精品伊人色| 亚洲激情自拍视频| 欧美成人猛片aaaaaaa| 久久国产精品免费一区| 成人a免费在线看| 日韩高清中文字幕一区| 中文字幕一区二区三中文字幕| 欧美日韩国产色站一区二区三区| 亚洲人人精品| av影院午夜一区| 青青草国产成人99久久| 亚洲视频小说图片| 精品日韩99亚洲| 久久久人人人| 黑人中文字幕一区二区三区| 国产河南妇女毛片精品久久久| 亚洲国产精品久久久久婷婷884 | 国产一区二区三区免费看| 亚洲午夜私人影院| 国产欧美精品一区二区色综合朱莉| 欧美日韩午夜在线视频| 亚洲麻豆一区| 欧美一区二区三区在线播放| 久久精工是国产品牌吗| 亚洲免费av观看| 日韩欧美在线一区二区三区| 久久国产精品高清| 色综合视频一区二区三区高清| 久久99国产精品久久99| 一级日本不卡的影视| 久久蜜桃av一区二区天堂| 在线不卡a资源高清| 久久亚洲精品欧美| 在线视频精品一区| 在线观看视频免费一区二区三区| 99麻豆久久久国产精品免费优播| 国产一区二区电影| 三级欧美韩日大片在线看| 日韩美女啊v在线免费观看| 久久婷婷一区二区三区| 欧美一区二区播放| 欧美亚洲另类激情小说| 国产一级久久| 亚洲国产精品一区在线观看不卡 | 99精品国产99久久久久久白柏 | 日本女人一区二区三区| 亚洲美女屁股眼交| 中文字幕欧美国产| 久久综合久久久久88| 欧美日韩国产综合一区二区 | 国产欧美在线观看一区| 日韩欧美中文字幕制服| 制服丝袜亚洲精品中文字幕| 在线视频欧美精品| 久久久久久穴| 国产日韩欧美一区二区三区在线观看| 国产一在线精品一区在线观看| 91丨porny丨蝌蚪视频| 成人黄色a**站在线观看| 国产精品一区三区| 国产在线精品一区二区三区不卡| 亚洲高清视频中文字幕| 亚洲专区一二三| 综合久久一区二区三区| 国产精品久久久久久久午夜片| 欧美国产精品一区二区三区| 久久久久久亚洲综合| 337p日本欧洲亚洲大胆色噜噜| 欧美成人精精品一区二区频| 日韩欧美激情一区| 精品人在线二区三区| 精品国产一区二区三区久久久蜜月 | 亚洲6080在线| 一区二区三区在线视频免费观看| 综合电影一区二区三区 | 色悠久久久久综合欧美99| 香蕉成人久久| 亚洲免费大片| 在线亚洲观看| 亚洲欧美日韩国产| 麻豆av福利av久久av| 久久天天狠狠| 91国模大尺度私拍在线视频| 欧美在线小视频| 91精品国产一区二区人妖| 欧美一级日韩一级| 精品成人一区二区| 中文字幕免费不卡在线| 国产精品高潮呻吟| 一区二区三区在线视频观看58| 亚洲成人免费在线观看| 天堂va蜜桃一区二区三区 | 香蕉久久夜色| 日本韩国精品在线| 欧美丝袜自拍制服另类| 欧美猛男超大videosgay| 日韩一区二区三区免费看| 欧美大片在线观看一区| 久久精品男人天堂av| 综合自拍亚洲综合图不卡区| 一区二区三区四区在线播放| 婷婷开心激情综合| 国产一区二区美女| kk眼镜猥琐国模调教系列一区二区|