<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 11.5\. 組合多個索引 一個單獨的索引掃描只能用于這樣的條件子句:使用被索引字段和索引操作符類中操作符, 并這些條件以`AND`連接。假設在`(a, b)`上有一個索引, 那么類似`WHERE a = 5 AND b = 6`的條件可以使用索引,但是像 `WHERE a = 5 OR b = 6`的條件就不能直接使用索引。 幸運的,PostgreSQL能夠組合多個索引(包括同一索引的多次使用) 來處理單個索引掃描不能實現的情況。系統可以在多個索引掃描之間組成`AND` 和`OR`條件。比如,一個類似`WHERE x = 42 OR x = 47 OR x = 53 OR x = 99` 這樣的查詢可以分解成四個在`x`上的獨立掃描,每個掃描使用一個條件, 最后將這些掃描的結果 OR 在一起,生成最終結果。另外一個例子是,如果我們在`x` 和`y`上有獨立的索引,一個類似`WHERE x = 5 AND y = 6` 這樣的查詢可以分解為幾個使用獨立索引的子句,然后把這幾個結果 AND 在一起,生成最終結果。 為了組合多個索引,系統掃描每個需要的索引,然后在內存里組織一個_位圖_, 它給出索引掃描報告中符合索引條件的表數據行位置。然后,根據查詢的需要, 把這個位圖使用 AND 和 OR 合并在一起。最后,訪問實際的表檢索并返回數據行。 表的數據行是按照物理順序進行訪問的,因為那就是位圖的布局; 這就意味著任何原來的索引排序都將消失,而如果查詢有一個`ORDER BY`子句, 那么還會有一個額外的排序步驟。因為這個原因,以及每個額外的索引掃描都增加了額外的時間, 規劃器有時候會選擇使用簡單的索引掃描,即使有多個索引可用也如此。 在大多數最簡單的應用里,可能有多種索引組合都是有用的,數據庫開發人員必須在使用哪個索引之間作出平衡。 有時候多字段索引是最好的,有時候創建一個獨立索引并依靠索引組合是最好的。比如, 假如你的查詢有時候只涉及字段`x`,有時候只涉及字段`y`,有時候兩個字段都涉及, 那么你可能會選擇在`x`和`y`上創建兩個獨立的索引, 然后依靠索引組合來處理同時使用兩個字段的查詢。你也可以在`(x, y)`上創建一個多字段索引, 它在同時使用兩個字段的查詢通常比索引組合更高效,但是,正如我們在[Section 11.3](#calibre_link-713) 里面討論的,它對那些只包含`y`的查詢幾乎沒有用,因此它不能是唯一一個索引。 一個多字段索引和`y`上的獨立索引可能會更好。因為對那些只涉及`x`的查詢, 可以使用多字段索引,但是它會更大,因此也比只在`x`上的索引更慢。最后一個選擇是創建三個索引, 但是這種方法只有在表的更新遠比查詢少得多,并且所有三種查詢都很普遍的情況下才是合理的。 如果其中一種查詢比其它的少很多,那么你可能更愿意僅僅創建兩種匹配更常見查詢的索引。
                  <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>

                              哎呀哎呀视频在线观看