<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] # 局部索引 局部索引又名分區索引,創建索引的分區關鍵字是 LOCAL。局部索引的分區鍵等同于表的分區鍵,局部索引的分區數等同于表的分區數,所以局部索引的分區機制和表的分區機制一樣。 下述示例語句為給分區表 t1 創建一個局部索引 idx: ~~~ obclient> CREATE TABLE t1(a int primary key, b int) PARTITION BY hash(a) partitions 5; obclient> CREATE INDEX idx ON t1(b) local; ~~~ 局部索引是針對單個分區上的數據創建的索引,因此局部索引的索引鍵值跟表中的數據是一一對應的關系,即局部索引上的一個分區一定對應到一個表分區,它們具有相同的分區規則,因此對于局部唯一索引而言,它只能保證分區內部的唯一性,而無法保證表數據的全局唯一性。如果要使用局部唯一索引去對數據唯一性做約束,那么局部唯一索引中必須包含表分區鍵。 下述示例語句為給分區表 t2 創建局部唯一索引 uk: ~~~ obclient> CREATE TABLE t2(a int primary key, b int) PARTITION BY hash(a) partitions 5; obclient> CREATE UNIQUE INDEX uk ON t2(b) LOCAL; ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the table's partitioning function obclient> CREATE UNIQUE INDEX uk2 on t2(b, a) local; Query OK, 0 rows affected (5.32 sec) ~~~ 在 OceanBase 中,局部索引同樣支持分區裁剪。使用分區裁剪的前提條件是查詢條件中能夠指定分區鍵,可以減少在查詢過程中讀取的分區個數,從而能夠提高查詢檢索的效率。下述示例語句為查詢條件中指定分區鍵: ~~~ obclient> EXPLAIN SELECT /*+index(t1 idx)*/ b FROM t1 WHERE b=1 AND a=1\G *************************** 1. row *************************** Query Plan: ===================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------- |0 |TABLE GET|t1(idx)|1 |52 | ===================================== Outputs & filters: ------------------------------------- 0 - output([t1.b]), filter(nil), access([t1.b]), partitions(p1) 1 row in set (0.01 sec) ~~~ 如果在查詢中,沒有指定分區鍵,那么局部索引將無法進行分區裁剪,這時會掃描所有分區,增加額外的掃描代價。下述示例語句為查詢條件中不指定分區鍵: ~~~ obclient> EXPLAIN SELECT /*+index(t1 idx)*/ b FROM t1 WHERE b=1\G *************************** 1. row *************************** Query Plan: ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |EXCHANGE IN DISTR | |4950 |3551| |1 | EXCHANGE OUT DISTR |:EX10000|4950 |3083| |2 | PX PARTITION ITERATOR| |4950 |3083| |3 | TABLE SCAN |t1(idx) |4950 |3083| ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.b]), filter(nil) 1 - output([t1.b]), filter(nil), dop=1 2 - output([t1.b]), filter(nil) 3 - output([t1.b]), filter(nil), access([t1.b]), partitions(p[0-4]) 1 row in set (0.01 sec) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看