新聞中心
DISTINCT 算子用于為對(duì)數(shù)據(jù)行去重,包括去除重復(fù)的 NULL 值。

發(fā)展壯大離不開廣大客戶長(zhǎng)期以來(lái)的信賴與支持,我們將始終秉承“誠(chéng)信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠(chéng)服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及紗窗等,在成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷推廣、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。
DISTINCT 算子包括 HASH DISTINCT 和 MERGE DISTINCT。
HASH DISTINCT
HASH DISTINCT 算子使用 HASH 算法執(zhí)行 DISTINCT 運(yùn)算。
示例 1:使用 HASH 算法執(zhí)行 DISTINCT 運(yùn)算,對(duì) t1 表的 c1 列進(jìn)行去重處理
obclient>CREATE TABLE t1(c1 INT, c2 INT);
Query OK, 0 rows affected (0.09 sec)
obclient>CREATE TABLE t2(c1 INT, c2 INT);
Query OK, 0 rows affected (0.09 sec)
obclient>EXPLAIN SELECT /*+USE_HASH_AGGREGATION*/ DISTINCT c1 FROM t1\G;
*************************** 1. row ***************************
Query Plan:
|=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST |
---------------------------------------
|0 |HASH DISTINCT| |101 |99169|
|1 | TABLE SCAN |t1 |100000 |66272|
=======================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
distinct([t1.c1])
1 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p0)上述示例中,執(zhí)行計(jì)劃展示中 0 號(hào)算子 HASH DISTINCT 執(zhí)行去重運(yùn)算,outputs & filters 詳細(xì)展示了 HASH DISTINCT 算子的具體輸出信息如下:
|
信息名稱 |
含義 |
|---|---|
output | 該算子的輸出列。 |
filter | 該算子的過(guò)濾謂詞。 由于示例中 HASH DISTINCT 算子沒(méi)有設(shè)置 filter,所以為 nil。 |
partition | 查詢需要掃描的分區(qū)。 |
distinct | 指定需要去重的列。 例如, |
MERGE DISTINCT
MERGE DISTINCT 算子使用 MERGE 算法執(zhí)行 DISTINCT 運(yùn)算。
示例 2:使用 MERGE 算法執(zhí)行 DISTINCT 運(yùn)算
obclient>EXPLAIN SELECT /*+NO_USE_HASH_AGGREGATION*/ DISTINCT c1 FROM t1\G;
*************************** 1. row ***************************
Query Plan:
|=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------
|0 |MERGE DISTINCT| |3 |40 |
|1 | SORT | |3 |39 |
|2 | TABLE SCAN |t1 |3 |37 |
=======================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
distinct([t1.c1])
1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
2 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p0)上述示例中,0 號(hào)算子 MERGE DISTINCT 執(zhí)行去重運(yùn)算,采用了 MERGE 算法,并且由于 2 號(hào)算子輸出的數(shù)據(jù)是無(wú)序的,而 MERGE DISTINCT 算子需要輸入的數(shù)據(jù)有序,所以在執(zhí)行去重運(yùn)算前需要使用 SORT 算子對(duì)數(shù)據(jù)排序。執(zhí)行計(jì)劃展示中的 outputs & filters 詳細(xì)展示了 MERGE DISTINCT 算子的輸出信息如下:
|
信息名稱 |
含義 |
|---|---|
output | 該算子的輸出列。 |
filter | 該算子的過(guò)濾謂詞。 由于示例中 MERGE DISTINCT 算子沒(méi)有設(shè)置 filter,所以為 nil。 |
distinct | 指定需要去重的列。 例如, |
分享名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBaseDISTINCT
文章網(wǎng)址:http://www.fisionsoft.com.cn/article/djjceis.html


咨詢
建站咨詢
