<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] # 全局索引 全局索引的創建規則是在索引屬性中指定 GLOBAL 關鍵字。與局部索引相比,全局索引最大的特點是全局索引的分區規則跟表分區是相互獨立的,全局索引允許指定自己的分區規則和分區個數,不一定需要跟表分區規則保持一致。 示例如下: ~~~ obclient> CREATE TABLE t1(a int PRIMARY KEY, b int, c int) PARTITION BY hash(a) partitions 5; obclient> CREATE INDEX gkey ON t1(b) GLOBAL PARTITION BY range(b) ( partition p0 VALUES less than (1), partition p1 VALUES less than (2), partition p2 VALUES less than (3) ); ~~~ 全局索引的分區鍵一定是索引鍵本身,因此在使用全局索引的過程中就會指定索引分區鍵的查詢條件,我們可以針對索引的分區規則進行分區裁剪,在查詢到索引鍵值后可以利用索引表中存儲的主鍵信息計算出主表的分區位置,進而對主表也能進行快速的分區定位,避免掃描主表的所有分區,因此對于無法指定主表分區鍵的查詢而言,全局索引在一定條件下能夠加速查詢的檢索效率。 示例如下: ~~~ obclient> EXPLAIN SELECT /*+index(t1 gkey)*/ * FROM t1 WHERE b=1\G *************************** 1. row *************************** Query Plan: ========================================== |ID|OPERATOR |NAME |EST. ROWS|COST | ------------------------------------------ |0 |TABLE LOOKUP|T1 |4950 |38645| |1 | TABLE SCAN |T1(GKEY)|4950 |1115 | ========================================== Outputs & filters: ------------------------------------- 0 - output([T1.A], [T1.B], [T1.C]), filter(nil), partitions(p[0-4]) 1 - output([T1.A]), filter(nil), access([T1.A]), partitions(p1) ~~~ 對于上述查詢,首先通過`where`條件中的`b=1`條件裁剪出全局索引的分區 p1,然后對全局索引進行`table scan`操作以得到對應的主鍵。利用`table lookup`算子對主表進行精確的分區掃描以避免掃描主表的所有分區。 在 OceanBase 數據庫中,如果索引屬性關鍵字沒有指定,那么默認的索引屬性是 GLOBAL 屬性,即創建的索引是全局索引,并且索引表只有一個分區。 如果主表沒有指定分區鍵或者指定的分區數為 1,那么主表也只有一個分區,這個時候,全局索引的數據和主表數據的物理位置是相互綁定在一起的,無論是遷移還是副本 Leader 發生切換,它們都是作為一個整體進行變換,不會存在中間狀態。如果全局索引的分區規則和主表的分區規則相同并且分區數相同,這時推薦創建一個局部索引。 一方面是因為全局索引的維護代價更大;另一方面是因為全局索引無法保證和主表分區的物理位置相同,除非將其和主表指定在一個表組中。
                  <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>

                              哎呀哎呀视频在线观看