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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 11.2\. 索引類型 PostgreSQL提供了好幾種索引類型:B-tree, Hash, GiST, SP-GiST和GIN 。 每種索引類型都比較適合某些特定的查詢類型,因為它們用了不同的算法。缺省時, `CREATE INDEX`命令將創建 B-tree 索引,它適合大多數情況。 B-tree 適合處理那些能夠按順序存儲的數據之上的等于和范圍查詢。 特別是在一個建立了索引的字段涉及到使用 | `&lt;` | |:--- | | `&lt;=` | | `=` | | `&gt;=` | | `&gt;` | 操作符之一進行比較的時候,PostgreSQL 的查詢規劃器都會考慮使用 B-tree 索引。等效于這些操作符組合的構造, 比如`BETWEEN`和`IN`,也可以用搜索 B-tree 索引實現。 同樣,索引列中的`IS NULL`或`IS NOT NULL`條件可以和B-tree索引一起使用。 _僅當_模式是一個常量,并且錨定在字符串開頭的時候, 優化器才會把 B-tree 索引用于模式匹配操作符`LIKE`和`~`, 比如:`col LIKE 'foo%'`或`col ~ '^foo'`, 但是`col LIKE '%bar'`就不行。同時,如果你的數據庫未使用 C 區域設置, 那么你需要用一個特殊的操作符類創建索引來支持模式匹配查詢上的索引。 參閱[Section 11.9](#calibre_link-82)。還有可能將 B-tree 索引用于`ILIKE` 和`~*`,但是僅當模式以非字母字符(不受大小寫影響的字符)開頭才可以。 B-tree索引也可以用來按照排序順序檢索數據。這并不總是比一個簡單的掃描和排序快, 但通常是有幫助的。 Hash 索引只能處理簡單的等于比較。當一個索引了的列涉及到使用`=` 操作符進行比較的時候,查詢規劃器會考慮使用 Hash 索引。下面的命令用于創建 Hash 索引: ``` CREATE INDEX _name_ ON _table_ USING hash (_column_); ``` | **Caution** | |:--- | | Hash 索引操作目前沒有記錄 WAL 日志,因此如果數據庫崩潰有未寫入的改變, 我們可能需要用`REINDEX`重建 Hash 索引。另外, 對hash索引的改變在初始的基礎備份后不是基于流復制或者基于文件復制的, 所以對于隨后使用它們的查詢會給出錯誤的回復。因為這些原因, 我們并不鼓勵使用 Hash 索引。 | GiST 索引不是單獨一種索引類型,而是一種架構,可以在這種架構上實現很多不同的索引策略。 因此,可以使用 GiST 索引的特定操作符類型高度依賴于索引策略(_操作符類_)。 作為示例,PostgreSQL的標準發布中包含用于二維幾何數據類型的 GiST 操作符類,它支持 | `&lt;&lt;` | | `&&lt;` | | `&&gt;` | | `&gt;&gt;` | | `&lt;&lt;&#124;` | | `&&lt;&#124;` | | `&#124;&&gt;` | | `&#124;&gt;&gt;` | | `@&gt;` | | `&lt;@` | | `~=` | | `&&` | 操作符的索引查詢。這些操作符的含義參見[Section 9.11](#calibre_link-1857)。 許多其它 GiST 操作符類可用于`contrib`中,或者是單獨的項目, 更多信息參見[Chapter 55](#calibre_link-1003)。 GiST索引也可最優化"nearest-neighbor"檢索,例如 ``` SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; ``` 找出距離給出目標點最近的十個地點。能這樣做也是依賴于使用特定的操作符類。 SP-GiST索引類似于GiST索引,提供一個支持不同類型檢索的架構。 SP-GiST允許廣泛不同的非平衡基于磁盤的數據結構的實施,例如四叉樹,k-d樹和根樹(嘗試)。 作為示例,PostgreSQL的標準發布中包含用于二維點的SP-GiST操作符類, 它支持 | `&lt;&lt;` | | `&gt;&gt;` | | `~=` | | `&lt;@` | | `&lt;^` | | `&gt;^` | 操作符的索引查詢。(這些操作符的含義參見[Section 9.11](#calibre_link-1857)。) 更多信息參見[Chapter 56](#calibre_link-550)。 GIN 索引是反轉索引,它可以處理包含多個鍵的值(比如數組)。與 GiST和SP-GiST 類似, GIN 支持用戶定義的索引策略,可以使用 GIN 索引的特定操作符類型根據索引策略的不同而不同。 作為示例,PostgreSQL的標準發布中包含用于一維數組的 GIN 操作符類,它支持 | `&lt;@` | | `@&gt;` | | `=` | | `&&` | 操作符的索引查詢。這些操作符的含義參見[Section 9.18](#calibre_link-1526)。 許多其它 GIN 操作符類可用于`contrib`集合或作為單獨的項目。 更多信息參見[Chapter 57](#calibre_link-1006)。
                  <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>

                              哎呀哎呀视频在线观看