日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)OceanBase教程:OceanBaseTABLESCAN

TABLE SCAN 算子是存儲(chǔ)層和 SQL 層的接口,用于展示優(yōu)化器選擇哪個(gè)索引來(lái)訪問(wèn)數(shù)據(jù)。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的呂梁網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

在 OceanBase 數(shù)據(jù)庫(kù)中,對(duì)于普通索引,索引的回表邏輯是封裝在 TABLE SCAN 算子中的;而對(duì)于全局索引,索引的回表邏輯由 TABLE LOOKUP 算子完成。

示例:含 TABLE SCAN 算子的執(zhí)行計(jì)劃


obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT, c3 INT, c4 INT, 
      INDEX k1(c2,c3));
Query OK, 0 rows affected (0.09 sec)

Q1:
obclient>EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1 = 1\G;
*************************** 1. row ***************************
Query Plan: 
| ==================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------
|0 |TABLE GET|t1  |1        |53  |
==================================
Outputs & filters:
-------------------------------------
  0 - output([t1.c1(0x7f22fbe69340)], [t1.c2(0x7f22fbe695c0)], [t1.c3(0x7f22fbe69840)], [t1.c4(0x7f22fbe69ac0)]), filter(nil),
      access([t1.c1(0x7f22fbe69340)], [t1.c2(0x7f22fbe695c0)], [t1.c3(0x7f22fbe69840)], [t1.c4(0x7f22fbe69ac0)]), partitions(p0),
      is_index_back=false,
      range_key([t1.c1(0x7f22fbe69340)]), range[1 ; 1],
      range_cond([t1.c1(0x7f22fbe69340) = 1(0x7f22fbe68cf0)])

Q2:
obclient>EXPLAIN EXTENDED SELECT * FROM t1 WHERE c2 < 1 AND c3 < 1 AND
         c4 < 1\G;
*************************** 1. row ***************************
Query Plan: 
| ======================================
|ID|OPERATOR  |NAME  |EST. ROWS|COST |
--------------------------------------
|0 |TABLE SCAN|t1(k1)|100      |12422|
======================================

Outputs & filters:
-------------------------------------
  0 - output([t1.c1(0x7f22fbd1e220)], [t1.c2(0x7f227decec40)], [t1.c3(0x7f227decf9b0)], [t1.c4(0x7f22fbd1dfa0)]), filter([t1.c3(0x7f227decf9b0) < 1(0x7f227decf360)], [t1.c4(0x7f22fbd1dfa0) < 1(0x7f22fbd1d950)]),
      access([t1.c2(0x7f227decec40)], [t1.c3(0x7f227decf9b0)], [t1.c4(0x7f22fbd1dfa0)], [t1.c1(0x7f22fbd1e220)]), partitions(p0),
      is_index_back=true, filter_before_indexback[true,false],
      range_key([t1.c2(0x7f227decec40)], [t1.c3(0x7f227decf9b0)], [t1.c1(0x7f22fbd1e220)]), 
      range(NULL,MAX,MAX ; 1,MIN,MIN),
      range_cond([t1.c2(0x7f227decec40) < 1(0x7f227dece5f0)])

上述示例中,執(zhí)行計(jì)劃展示中的 outputs & filters 詳細(xì)展示了 TABLE SCAN 算子的輸出信息如下:

信息名稱(chēng)

含義

operator

TABLE SCAN 算子的 operator 有兩種形式:TABLE SCAN 和 TABLE GET。

  • TABLE SCAN:屬于范圍掃描,會(huì)返回 0 行或者多行數(shù)據(jù)。

  • TABLE GET:直接用主鍵定位,返回 0 行或者 1 行數(shù)據(jù)。

name

選擇用哪個(gè)索引來(lái)訪問(wèn)數(shù)據(jù)。選擇的索引的名字會(huì)跟在表名后面,如果沒(méi)有索引的名字,則說(shuō)明執(zhí)行的是主表掃描。

這里需要注意,在 OceanBase 數(shù)據(jù)庫(kù)中,主表和索引的組織結(jié)構(gòu)是一樣的,主表本身也是一個(gè)索引。

output

該算子的輸出列。

filter

該算子的過(guò)濾謂詞。

由于示例中 TABLE SCAN 算子沒(méi)有設(shè)置 filter,所以為 nil。

partitions

查詢(xún)需要掃描的分區(qū)。

is_index_back

該算子是否需要回表。

例如,在 Q1 查詢(xún)中,因?yàn)檫x擇了主表,所以不需要回表。在 Q2 查詢(xún)中,索引列是 (c2,c3,c1), 由于查詢(xún)需要返回 c4 列,所以需要回表。

filter_before_indexback

與每個(gè) filter 對(duì)應(yīng),表明該 filter 是可以直接在索引上進(jìn)行計(jì)算,還是需要索引回表之后才能計(jì)算。

例如,在 Q2 查詢(xún)中,filter c3 < 1 可以直接在索引上計(jì)算,能減少回表數(shù)量;filter c4 < 1 需要回表取出 c4 列之后才能計(jì)算。

range_key/range/range_cond

  • range_key:索引的 rowkey 列。

  • range:索引開(kāi)始掃描和結(jié)束掃描的位置。判斷是否是全表掃描需要關(guān)注 range 的范圍。例如,對(duì)于一個(gè) rowkey 有三列的場(chǎng)景,range(MIN,MIN, MIN ; MAX, MAX, MAX)代表的就是真正意義上的全表掃描。

  • range_cond:決定索引開(kāi)始掃描和結(jié)束掃描位置的相關(guān)謂詞。


網(wǎng)站名稱(chēng):創(chuàng)新互聯(lián)OceanBase教程:OceanBaseTABLESCAN
標(biāo)題鏈接:http://m.5511xx.com/article/cdjjphs.html