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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 11.11\. 檢查索引的使用 盡管在PostgreSQL里的索引并不需要維護或調節, 但是檢查一下哪些索引在實際查詢中被使用了仍然非常重要。 檢查索引的使用是通過[EXPLAIN](#calibre_link-575)命令進行的; 為此目的做的應用在[Section 14.1](#calibre_link-1184)里演示。 我們也可以在一個運行的服務器上收集有關索引使用的統計信息, 就像[Section 27.2](#calibre_link-1288)里描述的那樣。 歸納一個判斷需要設置哪些索引的通用過程是很難的。在前面的章節中已經列出了許多典型的例子。 在大多數情況下我們都需要許多試驗。本節的剩余部分就是給出一些這方面的竅門。 * 總是先運行[ANALYZE](#calibre_link-589)命令收集關于表中數值分布的統計信息。 估計一個查詢返回的行數需要這個信息,而規劃器需要這個行數以便給每個可能的查詢規劃賦予真實開銷值。 如果缺乏任何真實的統計信息,那么就會假設一些缺省數值,那肯定是不準確的。因此, 如果還沒有運行`ANALYZE`就檢查一個應用的索引使用狀況,那實際上就是一次失敗的檢查。 參閱[Section 23.1.3](#calibre_link-446)和[Section 23.1.6](#calibre_link-77)獲取詳細信息。 * 使用真實的數據做實驗。用測試數據設置索引將告訴你在測試數據中需要什么索引, 而不是在真實數據中。 最要命的是用很小的數據集。如果從 100000 行中選 1000 行是使用索引的好時機, 那么從 100 行中選 1 行很難說也需要索引,因為 100 行很可能是裝在一個磁盤頁里面的, 因此沒有任何查詢規劃能比通過順序訪問抓取一個磁盤頁面更有效。 做測試數據的時候也要小心,如果應用還不能在生產環境中使用,那么這也是不可避免的。 那些非常相似的數據、完全隨機的數據、或者按照排序順序插入的數據會令統計信息偏離實際數據的特征。 * 如果索引沒有得到使用,那么在測試中強制它的使用也許有些價值。 有一些運行時參數可以關閉各種各樣的查詢規劃(在[Section 18.7.1](#calibre_link-1202)中描述)。 比如,關閉順序掃描(`enable_seqscan`)和嵌套循環連接(`enable_nestloop`) 將強迫系統使用不同的規劃。如果系統仍然選擇順序掃描或者嵌套循環連接, 那么在為何索引沒有得到使用的問題中可能有更基本的問題,比如, 查詢條件和索引不匹配等(前面的章節中介紹了什么樣的查詢可以使用什么樣的索引)。 * 如果強制索引用法確實使用了索引,那么就有兩種可能:要么是系統選擇是正確的: 使用索引實際上并不合適,要么是查詢計劃的開銷計算并不反映現實情況。 這樣你就應該對使用和不使用索引的查詢進行計時。 這個時候`EXPLAIN ANALYZE`命令就很有用了。 * 如果實際情況說明開銷計算是錯誤的,那么仍然有兩種可能。 總開銷是從每行的每個規劃節點的開銷乘以每個規劃節點的選擇性估計計算出來的。 規劃節點的開銷估計可以用一些運行時參數進行調節(在[Section 18.7.2](#calibre_link-1200) 中描述)。不準確的選擇性估計是因為統計信息不夠充分。 我們可以通過調節統計收集參數(參閱[ALTER TABLE](#calibre_link-88))提高選擇性估計的精度。 如果你沒能通過將開銷調整得更準確而實現索引的使用,那么你可能不得不求助于明確地強制索引使用。 并且與PostgreSQL開發人員聯系并討論你的情況。
                  <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>

                              哎呀哎呀视频在线观看