日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

ORACLE數(shù)據(jù)庫查看執(zhí)行計劃的方法

2020-07-26 14:31:46
字體:
供稿:網(wǎng)友
一、什么是執(zhí)行計劃(explain plan)

執(zhí)行計劃:一條查詢語句在ORACLE中的執(zhí)行過程或訪問路徑的描述。

二、如何查看執(zhí)行計劃

1: 在PL/SQL下按F5查看執(zhí)行計劃。第三方工具toad等。

很多人以為PL/SQL的執(zhí)行計劃只能看到基數(shù)、優(yōu)化器、耗費(fèi)等基本信息,其實(shí)這個可以在PL/SQL工具里面設(shè)置的。可以看到很多其它信息,如下所示

clip_image002

2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下執(zhí)行下面步驟

復(fù)制代碼 代碼如下:

SQL>EXPLAIN PLAN FOR
SELECT * FROM SCOTT.EMP; --要解析的SQL腳本
SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

clip_image004

clip_image006

3: 在SQL*PLUS下(有些命令在PL/SQL下無效)執(zhí)行如下命令:

復(fù)制代碼 代碼如下:

SQL>SET TIMING ON             --控制顯示執(zhí)行時間統(tǒng)計數(shù)據(jù)
SQL>SET AUTOTRACE ON EXPLAIN       --這樣設(shè)置包含執(zhí)行計劃、腳本數(shù)據(jù)輸出,沒有統(tǒng)計信息
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句
SQL>SET AUTOTRACE OFF           --不生成AUTOTRACE報告,這是缺省模式
SQL> SET AUTOTRACE ON           --這樣設(shè)置包含執(zhí)行計劃、統(tǒng)計信息、以及腳本數(shù)據(jù)輸出
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句
SQL>SET AUTOTRACE OFF
SQL> SET AUTOTRACE TRACEONLY      --這樣設(shè)置會有執(zhí)行計劃、統(tǒng)計信息,不會有腳本數(shù)據(jù)輸出
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句
SQL>SET AUTOTRACE TRACEONLY STAT --這樣設(shè)置只包含有統(tǒng)計信息
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

參考文檔:SQLPlus User's Guide and Reference Release 11.1

clip_image008

注意:PL/SQL Developer 工具并不完全支持所有的SQL*Plus命令,像SET AUTOTRACE ON 就如此,在PL/SQL Developer工具下執(zhí)行此命令會報錯

SQL> SET AUTOTRACE ON;

Cannot SET AUTOTRACE

4:SQL_TRACE可以作為參數(shù)在全局啟用,也可以通過命令形式在具體SESSION啟用

4.1 在全局啟用,在參數(shù)文件(pfile/spfile)中指定SQL_TRACE =true,在全局啟用SQL_TRACE時會導(dǎo)致所有進(jìn)程活動被跟蹤,包括后臺進(jìn)程以及用戶進(jìn)程,通常會導(dǎo)致比較嚴(yán)重的性能問題,所以在生產(chǎn)環(huán)境要謹(jǐn)慎使用。

提示:通過在全局啟用SQL_TRACE, 我們可以跟蹤到所有后臺進(jìn)程的活動,很多在文檔中的抽象說明,通過跟蹤文件的實(shí)時變化,我們可以清晰的看到各個進(jìn)程間的緊密協(xié)調(diào)。

4.2在當(dāng)前SESSION級別設(shè)置,通過跟蹤當(dāng)前進(jìn)程可以發(fā)現(xiàn)當(dāng)前操作的后臺數(shù)據(jù)庫遞歸活動(這在研究數(shù)據(jù)庫新特性時尤其有效),研究SQL執(zhí)行時,發(fā)現(xiàn)后臺

錯誤等。

復(fù)制代碼 代碼如下:

SQL> ALTER SESSION SET SQL_TRACE=TRUE;
SQL> SELECT * FROM SCOTT.EMP;
SQL> ALTER SESSION SET SQL_TRACE =FALSE;

那么此時如何查看相關(guān)信息?不管你在SQL*PLUS抑或PL/SQL DEVELOPER工具里面執(zhí)行上面腳本過后都看不到什么信息,你可以通過下面腳本查詢到trace日志信息
復(fù)制代碼 代碼如下:

SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
P.SPID || '.trc' TRACE_FILE_NAME
FROM
( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
WHERE M.STATISTIC# =1
AND S.SID = M.SID
AND P.ADDR = S.PADDR
) P,
( SELECT T.INSTANCE
FROM V$THREAD T, V$PARAMETER V
WHERE V.NAME ='thread'
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))
) I,
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T

clip_image010

TKPROF的幫助信息如下

復(fù)制代碼 代碼如下:

TKPROF 選項
選項 說明
TRACEFILE 跟蹤輸出文件的名稱
OUTPUTFILE 已設(shè)置格式的文件的名稱
SORT=option 語句的排序順序
PRINT=n 打印前 n 個語句
EXPLAIN=user/password 以指定的用戶名運(yùn)行 EXPLAIN PLAN
INSERT=filename 生成 INSERT 語句
SYS=NO 忽略作為用戶 sys 運(yùn)行的遞歸 SQL 語句
AGGREGATE=[Y|N] 如果指定 AGGREGATE = NO TKPROF 不聚集相同
SQL 文本的多個用戶
RECORD=filename 記錄在跟蹤文件中發(fā)現(xiàn)的語句
TABLE=schema.tablename 將執(zhí)行計劃放入指定的表而不是缺省的PLAN_TABLE

可以在操作系統(tǒng)中鍵入 tkprof 以獲得所有可用選項和輸出的列表
注 排序選項有

排序 選項說明
prscnt execnt fchcnt 調(diào)用分析執(zhí)行提取的次數(shù)
prscpu execpu fchcpu 分析執(zhí)行提取所占用的 CPU 時間
prsela exela fchela 分析執(zhí)行提取所占用的時間
prsdsk exedsk fchdsk 分析執(zhí)行提取期間的磁盤讀取次數(shù)
prsqry exeqry fchqry 分析執(zhí)行提取期間用于持續(xù)讀取的緩沖區(qū)數(shù)
prscu execu fchcu 分析執(zhí)行提取期間用于當(dāng)前讀取的緩沖區(qū)數(shù)
prsmis exemis 分析執(zhí)行期間庫高速緩存未命中的次數(shù)
exerow fchrow 分析執(zhí)行期間處理的行數(shù)
userid 分析游標(biāo)的用戶的用戶 ID

TKPROF 統(tǒng)計數(shù)據(jù)
Count: 執(zhí)行調(diào)用數(shù)
CPU: CPU 的使用秒數(shù)
Elapsed: 總共用去的時間
Disk: 物理讀取次數(shù)
Query: 持續(xù)讀取的邏輯讀取數(shù)
Current: 當(dāng)前模式下的邏輯讀取數(shù)
Rows: 已處理行數(shù)
TKPROF 統(tǒng)計信息
統(tǒng)計 含義
Count 分析或執(zhí)行語句的次數(shù)以及為語句發(fā)出的提取調(diào)用數(shù)
CPU 每個階段的處理時間以秒為單位如果在共享池中找到該語句對于分析階段為 0
Elapsed 占用時間以秒為單位通常不是非常有用因為其它進(jìn)程影響占用時間
Disk 從數(shù)據(jù)庫文件讀取的物理數(shù)據(jù)塊如果該數(shù)據(jù)被緩沖則該統(tǒng)計可能很低
Query 為持續(xù)讀取檢索的邏輯緩沖區(qū)通常用于 SELECT 語句
Current 在當(dāng)前模式下檢索的邏輯緩沖區(qū)通常用于 DML 語句
Rows 外部語句所處理的行對于 SELECT 語句在提取階段顯示它對于 DML 語句在執(zhí)行階段顯示它

Query 和Current 的總和為所訪問的邏輯緩沖區(qū)的總數(shù)

執(zhí)行下面命令:tkprof D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc h:/out.txtoutputfile explain=etl/etl

clip_image012

執(zhí)行上面命令后,可以查看生成的文本文件
復(fù)制代碼 代碼如下:

TKPROF: Release 10.2.0.1.0 - Production on 星期三 5月 23 16:56:41 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Trace file: D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc
Sort options: default
********************************************************************************
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
********************************************************************************
ALTER SESSION SET SQL_TRACE = TRUE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 1 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
begin :id := sys.dbms_transaction.local_transaction_id; end;
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 0 0 2
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 0 0 2
Misses in library cache during parse: 0
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
SELECT *
FROM
SCOTT.EMP
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 7 0 14
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 7 0 14
Misses in library cache during parse: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
Rows Execution Plan
------- ---------------------------------------------------
SELECT STATEMENT MODE: CHOOSE
TABLE ACCESS MODE: ANALYZED (FULL) OF 'EMP' (TABLE)
********************************************************************************
ALTER SESSION SET SQL_TRACE = FALSE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.00 0.00 0 0 0 0
Misses in library cache during parse: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 5 0.00 0.00 0 0 0 0
Execute 5 0.00 0.00 0 0 0 2
Fetch 1 0.00 0.00 0 7 0 14
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 11 0.00 0.00 0 7 0 16
Misses in library cache during parse: 2
Misses in library cache during execute: 1
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 0 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
user SQL statements in session.
internal SQL statements in session.
SQL statements in session.
statement EXPLAINed in this session.
********************************************************************************
Trace file: D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc
Trace file compatibility: 10.01.00
Sort options: default
session in tracefile.
user SQL statements in trace file.
internal SQL statements in trace file.
SQL statements in trace file.
unique SQL statements in trace file.
SQL statements EXPLAINed using schema:
ETL.prof$plan_table
Default table was used.
Table was created.
Table was dropped.
lines in trace file.
elapsed seconds in trace file.

4.3跟蹤其它用戶的進(jìn)程,在很多時候我們需要跟蹤其它用戶的進(jìn)程,而不是當(dāng)前用戶,可以通過ORACLE提供的系統(tǒng)包
DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION來完成。
例如:
復(fù)制代碼 代碼如下:

SELECT SID, SERIAL#, USERNAME FROM V$SESSION WHERE USERNAME = 'ETL'
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,TRUE);
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,FALSE);

5 利用10046事件
復(fù)制代碼 代碼如下:

ALTER SESSION SET TRACEFILE_IDENTIFIER = 10046;
ALTER SESSION SET EVENTS='10046 trace name context forever, level 8';
SELECT * FROM SCOTT.EMP;
ALTER SESSION SET EVENTS ='10046 trace name context off';
然后你可以用腳本查看追蹤文件的位置
SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
P.SPID || '.trc' TRACE_FILE_NAME
FROM
( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
WHERE M.STATISTIC# =1
AND S.SID = M.SID
AND P.ADDR = S.PADDR
) P,
( SELECT T.INSTANCE
FROM V$THREAD T, V$PARAMETER V
WHERE V.NAME ='thread'
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))
) I,
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T
查詢結(jié)果為wgods_ora_28279.trc文件, 但是去相應(yīng)目錄卻沒有找到對應(yīng)的追蹤文件,而是如下trace文件:wgods_ora_28279_10046.trc

6 利用10053事件

有點(diǎn)類似10046,在此略過、

7 系統(tǒng)視圖

通過下面一些系統(tǒng)視圖,你可以看到一些零散的執(zhí)行計劃的相關(guān)信息,有興趣的話可以多去研究一下。
復(fù)制代碼 代碼如下:

SELECT * FROM V$SQL_PLAN
SELECT * FROM V$RSRC_PLAN_CPU_MTH
SELECT * FROM V$SQL_PLAN_STATISTICS
SELECT * FROM V$SQL_PLAN_STATISTICS_ALL
SELECT * FROM V$SQLAREA_PLAN_HASH
SELECT * FROM V$RSRC_PLAN_HISTORY

三、看懂執(zhí)行計劃

1.執(zhí)行順序

執(zhí)行順序的原則是:由上至下,從右向左

由上至下:在執(zhí)行計劃中一般含有多個節(jié)點(diǎn),相同級別(或并列)的節(jié)點(diǎn),靠上的優(yōu)先執(zhí)行,靠下的后執(zhí)行

從右向左:在某個節(jié)點(diǎn)下還存在多個子節(jié)點(diǎn),先從最靠右的子節(jié)點(diǎn)開始執(zhí)行。

當(dāng)然,你在PL/SQL工具中也可以通過它提供的功能來查看執(zhí)行順序。如下圖所示:

clip_image014

2.執(zhí)行計劃中字段解釋

clip_image016

SQL>
名詞解釋:
recursive calls           遞歸調(diào)用
db block gets           從buffer cache中讀取的block的數(shù)量當(dāng)前請求的塊數(shù)目,當(dāng)前模式塊意思就是在操作中正好提取的塊數(shù)目,而不是在一致性讀的情況下而產(chǎn)生的正常情況下,一個查詢提取的塊是在查詢查詢開始的那個時間點(diǎn)上存在的數(shù)據(jù)庫,當(dāng)前塊是在這個時候存在數(shù)據(jù)塊,而不是這個時間點(diǎn)之前或者之后的的數(shù)據(jù)塊數(shù)目。
consistent gets          從buffer cache中讀取的undo數(shù)據(jù)的block的數(shù)量數(shù)據(jù)請求總數(shù)在回滾段Buffer中的數(shù)據(jù)一致性讀所需要的數(shù)據(jù)塊,,這里的概念是在你處理你這個操作的時侯需要在一致性讀狀態(tài)上處理多個塊,這些塊產(chǎn)生的主要原因是因為你在查詢過程中,由于其它會話對數(shù)據(jù) 塊進(jìn)行操作,而對所要查詢的塊有了修改,但是由于我們的查詢是在這些修改之前調(diào)用的,所要需要對回滾 段中的數(shù)據(jù)塊的前映像進(jìn)行查詢,以保證數(shù)據(jù)的一致性。這樣就產(chǎn)生了一致性讀。

physical reads           物理讀 就是從磁盤上讀取數(shù)據(jù)塊的數(shù)量。其產(chǎn)生的主要原因是:
                  1:在數(shù)據(jù)庫高速緩存中不存在這些塊。
                  2:全表掃描
                  3:磁盤排序
redo size              DML生成的redo的大小
sorts (memory)           在內(nèi)存執(zhí)行的排序量
sorts (disk)            在磁盤執(zhí)行的排序量
2091 bytes sent via SQL*Net to client     從SQL*Net向客戶端發(fā)送了2091字節(jié)的數(shù)據(jù)
416 bytes received via SQL*Net from client  客戶端向SQL*Net發(fā)送了416字節(jié)的數(shù)據(jù)。
參考文檔:SQLPlus User's Guide and Reference Release 11.1

clip_image018

db block gets 、 consistent gets 、 physical reads這三者的關(guān)系可以概括為:邏輯讀指的是ORACLE從內(nèi)存讀到的數(shù)據(jù)塊塊數(shù)量,一般來說是:
consistent gets + db block gets. 當(dāng)在內(nèi)存中找不到所需要的數(shù)據(jù)塊的話,就需要從磁盤中獲取,于是就產(chǎn)生了物理讀。
3.具體內(nèi)容查看
1> Plan hash Value
這一行是這一條語句的的hash值,我們知道ORACLE對每一條ORACLE語句產(chǎn)生的執(zhí)行計劃放在SHARE POOL里面,第一次要經(jīng)過硬解析,產(chǎn)生hash值。下次再執(zhí)行時比較hash值,如果相同就不會執(zhí)行硬解析。
2> COST

COST沒有單位,是一個相對值,是SQL以CBO方式解析執(zhí)行計劃時,供ORACLE來評估CBO成本,選擇執(zhí)行計劃用的。沒有明確的含義,但是在對比是就非常有用。
公式:COST=(Single Block I/O COST + MultiBlock I/O Cost + CPU Cost)/ Sreadtim

3> 對上面執(zhí)行計劃列字段的解釋:
Id: 執(zhí)行序列,但不是執(zhí)行的先后順序。執(zhí)行的先后根據(jù)Operation縮進(jìn)來判斷(采用最右最上最先執(zhí)行的原則看層次關(guān)系,在同一級如果某個動作沒有子ID就最先執(zhí)行。一般按縮進(jìn)長度來判斷,縮進(jìn)最大的最先執(zhí)行,如果有2行縮進(jìn)一樣,那么就先執(zhí)行上面的。)
    Operation:當(dāng)前操作的內(nèi)容。
    Name:操作對象
    Rows:也就是10g版本以前的Cardinality(基數(shù)),Oracle估計當(dāng)前操作的返回結(jié)果集行數(shù)。
    Bytes:表示執(zhí)行該步驟后返回的字節(jié)數(shù)。
    Cost(CPU):表示執(zhí)行到該步驟的一個執(zhí)行成本,用于說明SQL執(zhí)行的代價。
    Time:Oracle 估計當(dāng)前操作的時間。
4.謂詞說明:
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("B"."MGR" IS NOT NULL)
4 - access("A"."EMPNO" = "B"."MGR")
    Access: 表示這個謂詞條件的值將會影響數(shù)據(jù)的訪問路勁(全表掃描還是索引)。
    Filter:表示謂詞條件的值不會影響數(shù)據(jù)的訪問路勁,只起過濾的作用。
    在謂詞中主要注意access,要考慮謂詞的條件,使用的訪問路徑是否正確。
5、 動態(tài)分析
如果在執(zhí)行計劃中有如下提示:
Note
------------
-dynamic sampling used for the statement
這提示用戶CBO當(dāng)前使用的技術(shù),需要用戶在分析計劃時考慮到這些因素。 當(dāng)出現(xiàn)這個提示,說明當(dāng)前表使用了動態(tài)采樣。我們從而推斷這個表可能沒有做過分析。
這里會出現(xiàn)兩種情況:
(1) 如果表沒有做過分析,那么CBO可以通過動態(tài)采樣的方式來獲取分析數(shù)據(jù),也可以或者正確的執(zhí)行計劃。
(2) 如果表分析過,但是分析信息過舊,這時CBO就不會在使用動態(tài)采樣,而是使用這些舊的分析數(shù)據(jù),從而可能導(dǎo)致錯誤的執(zhí)行計劃。

四、表訪問方式

1.Full Table Scan (FTS) 全表掃描

2.Index Lookup 索引掃描
There are 5 methods of index lookup:
index unique scan --索引唯一掃描
通過唯一索引查找一個數(shù)值經(jīng)常返回單個ROWID,如果存在UNIQUE或PRIMARY KEY約束(它保證了語句只存取單行的話),ORACLE
經(jīng)常實(shí)現(xiàn)唯一性掃描
Method for looking up a single key value via a unique index. always returns a single value, You must supply AT LEAST the leading column of the index to access data via the index.
index range scan --索引局部掃描
Index range scan is a method for accessing a range values of a particular column. AT LEAST the leading column of the index must be supplied to access data via the index. Can be used for range operations (e.g. > < <> >= <= between) .
使用一個索引存取多行數(shù)據(jù),在唯一索引上使用索引范圍掃描的典型情況是在謂詞(WHERE 限制條件)中使用了范圍操作符號(如>, < <>, >=, <=,BWTEEN)
index full scan --索引全局掃描
Full index scans are only available in the CBO as otherwise we are unable to determine whether a full scan would be a good idea or not. We choose an index Full Scan when we have statistics that indicate that it is going to be more efficient than a Full table scan and a sort. For example we may do a Full index scan when we do an unbounded scan of an index and want the data to be ordered in the index order.
index fast full scan --索引快速全局掃描,不帶order by情況下常發(fā)生
Scans all the block in the index, Rows are not returned in sorted order, Introduced in 7.3 and requires V733_PLANS_ENABLED=TRUE and CBO, may be hinted using INDEX_FFS hint, uses multiblock i/o, can be executed in parallel, can be used to access second column of concatenated indexes. This is because we are selecting all of the index.
index skip scan --索引跳躍掃描,where條件列是非索引的前提情況下常發(fā)生
Index skip scan finds rows even if the column is not the leading column of a concatenated index. It skips the first column(s) during the search.
3.Rowid 物理ID掃描
This is the quickest access method available.Oracle retrieves the specified block and extracts the rows it is interested in. --Rowid掃描是最快的訪問數(shù)據(jù)方式
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
91欧美在线| 精品一性一色一乱农村| 日韩在线观看视频一区| wwwav91com| 日本不卡高清视频一区| 亚洲精华国产欧美| 综合图区亚洲白拍在线| 国产黄在线观看免费观看不卡| 日韩欧美在线字幕| 日本精品在线播放| 亚洲va久久久噜噜噜久久| 欧美久久在线| 亚洲综合在线中文字幕| 最近中文字幕日韩精品| 精品国产乱码久久久久久牛牛| 日本啊v在线| 午夜国产在线视频| 日韩在线观看视频一区二区| 日韩 欧美 亚洲| 免费在线视频一级不卡| 欧美日韩国产免费| 国产日韩成人精品| 国产激情久久久| 欧美日韩中文在线| 91精品综合久久| a在线观看免费视频| wwwav91com| 一级网站免费观看| 福利一区二区| 午夜一区二区三区| 一级网站免费观看| 亚洲制服丝袜一区| 在线免费播放av| 日本精品在线| 中文字幕日韩在线观看| 国产在线不卡一区| 精品久久久91| 亚洲欧美久久久| 国产一区不卡精品| 国产高潮久久久| 欧美99久久| 中文欧美字幕免费| www.尤物.com| 欧美日韩高清不卡| 国产精品视频福利一区二区| 欧美日韩在线看| 亚洲成a人片在线www| 欧美国产91| 99精品999| 欧美在线日韩| 日韩欧美三级视频| 久久久久久久久99精品| 日韩在线不卡一区| 国产亚洲短视频| 九七久久人人| 中文字幕在线观看国产| 中文字幕五月欧美| 国产在线导航| 免费高清视频日韩| 日韩在线高清视频| 日韩欧美一级精品久久| 91一区二区| 中文字幕在线国产| 99精品在线播放| 日韩欧美在线看| 欧洲精品二区| 一区二区日韩视频| 精品人妻一区二区三区视频| 欧美性极品xxxx做受| 国产成人精品免费在线| 国产在线日韩精品| 欧美日韩一级黄| 中文字幕日韩在线视频| 日韩欧美久久| 午夜亚洲一区| 日韩欧美国产成人一区二区| 天堂√8在线中文| 欧洲一级精品| 视频一区视频二区中文| aaa大片在线观看| 中文字幕在线国产| 刘玥91精选国产在线观看| 91精品国产自产91精品| 日韩视频精品| 欧美日韩综合高清一区二区 | 亚洲欧洲国产视频| 精品av中文字幕在线毛片| 国产福利在线看| а√天堂中文在线资源8| 国产调教精品| 久久精品久久精品亚洲人| 顶级网黄在线播放| 欧美日韩国产中字| 影音先锋一区二区资源站| 一区二区三区在线|网站| 国产一二三四| 欧美日韩国产一区| 亚洲综合在线电影| 亚洲一区中文字幕在线观看| 1区2区3区在线视频| 日韩欧美国产免费播放| 99中文字幕一区| 亚洲一区视频在线观看视频| www 日韩| 白嫩少妇丰满一区二区| 国产极品嫩模在线视频一区| 91精品国产入口| 日韩在线二区| 国产超级va在线视频| 欧美特黄一区| 精品免费久久久| 亚洲精品中文字幕乱码三区| 欧美特黄一区| 国产黄色在线网站| 欧美国产亚洲一区| 在线日韩精品视频| 中文字幕国产欧美| 不卡视频一区二区三区| 国产欧美日韩亚州综合| 亚洲永久字幕| 国产色综合网| √天堂资源中文www| 欧美日韩高清在线一区| 色99中文字幕| 国产 欧美在线| 日韩欧美在线视频| 亚洲热线99精品视频| 欧美日韩视频免费看| 日韩精品乱码av一区二区| 在线视频国产三级| 在线观看免费国产成人软件| 91 中文字幕| 亚洲国产www| 精品日韩av| 视频一区二区中文字幕| 国产农村妇女精品一二区| 69av亚洲| 欧美日韩国产三级| 亚洲 国产 欧美 日韩| 久久riav| 在线中文字幕网站| av免费网站在线观看| 国产在线小视频| 亚洲最大黄色| 亚洲大片精品永久免费| 欧美亚洲另类制服自拍| 亚洲女人天堂a在线播放| 国产一卡2卡3卡免费网站 | 一区二区三区在线|网站| 在线国产三级| 欧美日韩第一区日日骚| 中文字幕在线观看国产| 中文字幕一区二区三区精品| 日韩精品视频中文在线观看| 日韩在线视频在线观看| 樱花草www在线观看| 亚洲第一视频在线观看| 国产乱国产乱老熟300| 不卡在线视频| 欧美中文字幕视频| 亚洲第一视频| 欧洲精品在线一区| 欧美不卡123| 亚洲欧美99| 免费视频久久| 日韩亚洲一区中文字幕| 深夜福利一区二区| av亚洲免费| 国产www在线观看| 亚洲va韩国va欧美va精品| 黄色国产网站在线观看| 欧美日韩高清在线播放| 日韩午夜中文字幕| 91日韩中文字幕| 中文字幕不卡三区| 欧美日韩国产亚洲一区| 国产欧美久久久精品免费| 欧美日韩精品在线视频| 国产裸体歌舞团一区二区| 天天在线视频色| 中文字幕亚洲乱码| 久草亚洲一区| 欧美日韩国产第一页| aaa欧美日韩| 中文在线一区二区| 91精品久久久久久久久久| 日韩欧中文字幕| 国产一区日韩| 日韩av一区二区在线| 日韩精品在线网站| 久久综合九色欧美综合狠狠| 五月天久久比比资源色| 91精品国产综合久久久久久| 欧美日韩精品免费| 欧美日韩高清一区二区不卡| 91精品久久久久久久久久入口| 国产精品一区二区三区免费观看| 91蜜桃婷婷狠狠久久综合9色| 亚洲福利在线看| 亚洲电影中文字幕在线观看| 亚洲综合在线中文字幕| 国产对白在线| 中文字幕亚洲二区 | 日韩中文字幕亚洲| 99久久精品国产成人一区二区| 日韩免费高清一区二区| 国产导航在线| 一区二区三区在线免费| 欧美三级视频在线| 国产小视频在线观看| 亚洲免费婷婷| 亚洲福利一区二区三区| 国产区日韩欧美| 亚洲欧美久久久| 欧美三级在线看| 免费高清特黄a大片| 国产视频一区三区| 久久精品久久久久| 一区二区国产在线| 国产免费久久久| 国产视频一区三区| 精品乱子伦一区二区| 婷婷精品进入| 黄色国产网站在线观看| 韩国av一区二区| 在线中文字幕网站| 国产欧美日韩精品高清二区综合区 | 国产极品嫩模在线视频一区| 欧美另类久久久品| 中文亚洲欧美| 日韩 欧美 亚洲| 欧美日韩国产大片| 国产欧美日韩在线观看| 日韩午夜一区| 精品一性一色一乱农村| 欧美中文字幕在线观看视频| 亚洲高清免费一级二级三级| 最新中文字幕在线| 日韩欧美国产亚洲| 日韩.欧美.亚洲| 欧美日韩中文国产| 高清不卡一区二区| 精品视频久久| 中文在线不卡视频| 中文字幕在线看视频国产欧美| 欧美国产三级| 日韩欧美中文字幕精品| 福利一区二区| 中文字幕亚洲区| 中文字幕国产亚洲| 偷窥国产亚洲免费视频| 欧美色欧美亚洲高清在线视频| 中文字幕欧美亚洲| 日韩欧美在线网址| 日韩精品在线观| 亚洲欧洲一区二区天堂久久| 在线日韩欧美| 一区二区不卡在线播放| 91精品国产91久久久久久不卡| 国产欧美日韩中文字幕在线| 在线免费播放av| av手机天堂| 亚洲乱码中文字幕| 日韩亚洲不卡在线| 在线亚洲人成| 亚洲一区在线观看网站| av免费观看国产| 顶级网黄在线播放| 日本啊v在线| 成人禁用看黄a在线| 国产欧美日韩成人| 日韩综合精品| 欧美日韩精品是欧美日韩精品| 国产在线精品日韩| 亚洲开心激情| 欧美高清视频一区二区三区| a√免费观看在线网址www| 亚洲国产一区自拍| 国产区日韩欧美| 精品久久久久久综合日本欧美| 午夜av一区二区| 99久久婷婷| 999精品视频在线观看播放| 中文字幕日韩第一页| 国产福利精品导航| 国产免费一级片| 国产欧美日韩在线播放| 国产欧美日韩精品在线| 欧美1区免费| 亚洲综合在线不卡| 国产欧美日韩视频| 亚洲一区三区在线观看| 精品日韩欧美在线| 视频一区二区中文字幕| 天堂精品高清1区2区3区| 日韩中文字幕视频在线| 中文字幕日韩欧美在线视频| 91日韩欧美| 日韩欧美综合视频| 91精品国产手机| 精品九九久久| 日韩精品高清不卡| 日韩精品视频在线播放| 日本免费看黄| 亚州黄色一级| 欧美日韩在线观看首页| 中文字幕成人乱码在线电影| 亚洲热在线观看| 最近高清中文在线字幕在线观看1 中文字幕在线视频久 | 免费在线视频一区二区| 日韩精品在线免费看| 99精品视频99| 欧美一级免费看| 国产乱国产乱老熟300| 欧美日韩国产91| 日韩手机在线观看视频| 在线国产99| 天天摸日日摸狠狠添| 91精品网站| 欧美 日韩 中文字幕| av免费在线不卡| 一级日本免费的| 在线免费视频一区二区| 日韩精品视频在线| 国产高清在线一区| av中文网站| 久久久久黄色| 91久久久久久久久| 成人欧美亚洲| 国产婷婷一区二区| 欧美 日韩 国产 在线观看| 国产网站av| 一区二区三区在线免费| 国产日产一区二区三区 | 日韩精品中文字幕第1页| 欧美另类专区| 欧美一级欧美三级在线观看| 久久中文免费视频| 久久精品www| 国产成人精品免费在线| 欧美日韩中文字幕在线观看| 日韩视频一区| 视频在线一区二区| 一级一片免费视频| 国产婷婷一区二区| 国产成免费视频| 欧美日韩国产在线播放| 在线资源av| 久久视频免费看| 九一久久久久久| 在线视频三区| 国产手机精品视频| 久久久精品国产99久久精品芒果| 99精品在线播放| 国产婷婷色一区二区三区| 国产蜜臀在线| 国产日产一区二区三区| 欧美日韩综合色| 日韩欧美一二三区| а√天堂中文在线资源8| 不卡av免费在线| 亚洲大片精品永久免费| 日韩欧美国产综合| 日韩三级免费观看| 精品三区视频| 欧美大片在线观看一区| 久久69成人| 精品中文在线| 日韩精品免费视频一区二区三区| 国产xxx在线| 日韩国产在线观看一区| 日韩高清在线不卡| 中文字幕欧美日韩va免费视频| 在线一区免费| 中文欧美字幕免费| 日韩一级在线免费观看| 精品久久蜜桃| 日本免费看黄| 在线视频你懂得一区| 一本一道综合狠狠老| 免费精品国产自产拍在| 久久精品国产99| 欧美中日韩在线| 在线观看免费国产成人软件| 欧美日韩国产高清| 日韩精品综合在线| 最新中文字幕在线播放 | 久久婷婷中文字幕| 视频一区视频二区中文| 91精品国产91久久久久久不卡| 亚洲最新永久观看在线| 欧美日韩精品免费| 日韩中文欧美在线| 91欧美日韩麻豆精品| 日韩精品视频在线播放| 久草视频观看| 欧美 日韩 国产在线观看| 香蕉人人精品| 影音先锋中文字幕在线观看| 欧美精选午夜久久久乱码6080|