掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
訪問路徑是指數(shù)據(jù)庫中訪問表的方法,即使用哪個索引來訪問表。

專注于為中小企業(yè)提供成都網(wǎng)站建設、做網(wǎng)站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)額爾古納免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
訪問路徑的分析是單表查詢的最重要的問題之一,對于使用主表掃描的訪問路徑來說,執(zhí)行時間一般與需要掃描的數(shù)據(jù)量(范圍)成正比。一般來說,可以使用 ?EXPLAIN EXTENDED? 命令,將表掃描的范圍段展示出來。對于有合適索引的查詢,使用索引可以大大減小數(shù)據(jù)的訪問量,因此對于使用主表掃描的查詢,要分析沒有選中索引掃描的原因,是由于不存在可用的索引,還是索引掃描范圍過大以至于代價過高。
OceanBase 數(shù)據(jù)庫的路徑選擇方法融合了基于規(guī)則的路徑選擇方法和基于代價的路徑選擇方法。OceanBase 數(shù)據(jù)庫首先會使用基于規(guī)則的路徑選擇方法,如果基于規(guī)則的路徑選擇方法之后只有一個可選擇的路徑,那么就直接使用該路徑,否則就再使用基于代價的路徑選擇方法選擇一個代價最小的路徑。
在 OceanBase 數(shù)據(jù)庫中,用戶可以通過 HINT 來指定訪問路徑。訪問路徑的 HINT 形式如下: ?/+INDEX(table_name index_name)/?
其中 ?table_name? 表示表的名字,?index_name? 表示索引的名字。如果 ?index_name? 是 PRIMARY,代表選擇主表掃描路徑。
如下為用 HINT 來指定訪問路徑的示例:
obclient>CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, d INT, INDEX k1(b,c));
Query OK, 0 rows affected (0.10 sec)
obclient>EXPLAIN SELECT/*+INDEX(t1 PRIMARY)*/ * FROM t1;
| ===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|t1 |1000 |476 |
===================================
Outputs & filters:
-------------------------------------
0 - output([t1.a], [t1.b], [t1.c], [t1.d]), filter(nil),
access([t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0)
obclient>EXPLAIN SELECT/*+INDEX(t1 k1)*/ * FROM t1;
| =====================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------
|0 |TABLE SCAN|t1(k1)|1000 |5656|
=====================================
Outputs & filters:
-------------------------------------
0 - output([t1.a], [t1.b], [t1.c], [t1.d]), filter(nil),
access([t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0) 
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流