日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

COUNT 算子用于兼容 Oracle 的 ROWNUM 功能,實(shí)現(xiàn) ROWNUM 表達(dá)式的自增操作。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、阿巴嘎網(wǎng)絡(luò)推廣、重慶小程序開(kāi)發(fā)、阿巴嘎網(wǎng)絡(luò)營(yíng)銷、阿巴嘎企業(yè)策劃、阿巴嘎品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供阿巴嘎建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

在一般場(chǎng)景下,當(dāng) SQL 查詢含有 ROWNUM 時(shí),SQL 優(yōu)化器就會(huì)在生成執(zhí)行計(jì)劃的時(shí)候分配一個(gè) COUNT 算子。當(dāng)然在一些情況下,SQL 優(yōu)化器會(huì)將含有 ROWNUM 的 SQL 改寫(xiě)為 LIMIT 算子,這時(shí)就不會(huì)再分配 COUNT 算子。

正常分配 COUNT 算子的場(chǎng)景

示例 1:含有 ROWNUM 的 SQL 查詢正常分配 COUNT 算子場(chǎng)景。


obclient>CREATE TABLE t1(c1 INT, c2 INT);
Query OK, 0 rows affected (0.12 sec)

obclient>INSERT INTO t1 VALUES(1, 1);
Query OK, 1 rows affected (0.12 sec)

obclient>INSERT INTO t1 VALUES(3, 3);
Query OK, 1 rows affected (0.12 sec)

obclient>INSERT INTO t1 VALUES(5, 5);
Query OK, 1 rows affected (0.12 sec)

Q1: 
obclient>EXPLAIN SELECT c1,ROWNUM FROM t1\G;
*************************** 1. row ***************************
Query Plan:
| ====================================
|ID|OPERATOR   |NAME|EST. ROWS|COST|
------------------------------------
|0 |COUNT      |    |1        |37  |
|1 | TABLE SCAN|T1  |1        |36  |
====================================

Outputs & filters: 
-------------------------------------
  0 - output([T1.C1], [rownum()]), filter(nil)
  1 - output([T1.C1]), filter(nil), 
      access([T1.C1]), partitions(p0)

obclient>SELECT c1,ROWNUM FROM t1;
+------+--------+
| C1   | ROWNUM |
+------+--------+
|    1 |      1 |
|    3 |      2 |
|    5 |      3 |
+------+--------+
3 rows in set (0.01 sec)

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

信息名稱

含義

output

該算子輸出的表達(dá)式。

其中 rownum() 表示 ROWNUM 對(duì)應(yīng)的表達(dá)式。

filter

該算子上的過(guò)濾條件。

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

從上述執(zhí)行計(jì)劃示例的輸出結(jié)果可以發(fā)現(xiàn),ROWNUM 對(duì)應(yīng)的表達(dá)式的初始值為 1,每通過(guò)一次 COUNT 算子,COUNT 算子就會(huì)為 ROWNUM 對(duì)應(yīng)的表達(dá)式的值加上 1,實(shí)現(xiàn) ROWNUM 表達(dá)式的自增操作。

不分配 COUNT 算子的場(chǎng)景

示例 2:含有 rownum 的 SQL 改寫(xiě)為 LIMIT 后,不分配 COUNT 算子的場(chǎng)景。


Q2:
obclient>EXPLAIN SELECT 1 FROM DUAL WHERE ROWNUM < 2\G;
*************************** 1. row ***************************
Query Plan:
| ====================================
|ID|OPERATOR   |NAME|EST. ROWS|COST|
------------------------------------
|0 |LIMIT      |    |1        |1   |
|1 | EXPRESSION|    |1        |1   |
====================================

Outputs & filters: 
-------------------------------------
  0 - output([1]), filter(nil), limit(?), offset(nil)
  1 - output([1]), filter(nil)
      values({1})

從上述執(zhí)行計(jì)劃示例的輸出結(jié)果可以發(fā)現(xiàn),雖然 SQL 中含有 ROWNUM,但是經(jīng)過(guò) SQL 優(yōu)化器改寫(xiě)之后,已經(jīng)將涉及含有 ROWNUM 的表達(dá)式轉(zhuǎn)換為了等價(jià)的 LIMIT 表達(dá)式,轉(zhuǎn)換的好處在于可以做更多的優(yōu)化,詳細(xì)信息請(qǐng)參見(jiàn) LIMIT。


文章題目:創(chuàng)新互聯(lián)OceanBase教程:OceanBaseCOUNT
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/dpodddd.html