<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.9\. 操作符類和操作符族 定義索引的同時可以為索引的每個字段聲明一個_操作符類_。 ``` CREATE INDEX _name_ ON _table_ (_column_ _opclass_ [`_sort options_`] [, ...]); ``` 這個操作符類指明該索引用于該字段時要使用的操作符。例如,一個在`int4` 上的 B-tree 索引將使用`int4_ops`類;這個操作符類包括用于`int4` 的比較函數。實際上,字段類型的缺省操作符通常就足夠了。擁有操作符類的主要原因是: 對于某些數據類型,可能存在多個有意義的索引行為。例如,我們可能想排序兩個復數, 既可能通過絕對值,也可能通過實部。我們可以通過為該數據類型定義兩個操作符類, 然后在建立索引時選擇合適的那個。操作符類決定了基本的排序方式(這個方式可以通過添加排序選項來修改: `COLLATE`, `ASC`/`DESC` 和/或 `NULLS FIRST`/`NULLS LAST`)。 除了缺省的以外,還有一些有內置的操作符類: * `text_pattern_ops`,`varchar_pattern_ops`和`bpchar_pattern_ops` 操作符類分別支持在`text`, `varchar`和`char`類型上的 B-tree 索引。 他們與初始的操作符類的區別是數值是嚴格地逐個字節比較的,而不是根據區域相關的集合規則進行比較。 這樣,如果數據庫不使用標準的"C"區域設置,那么這些操作符類適用于那些涉及模式匹配表達式 (`LIKE`或者 POSIX 正則表達式)的查詢。舉一個例子, 你可以像下面這樣對一個`varchar`字段進行索引: ``` CREATE INDEX test_index ON test_table (col varchar_pattern_ops); ``` 請注意,如果你希望包含普通`&lt;`,`&lt;=`, `&gt;`,或 `&gt;=`比較的查詢使用索引,那么你還應該創建一個使用缺省操作符類的索引。 這樣的查詢不能使用`_xxx_`_pattern_ops操作符類。 (不過普通相等比較可以使用這個操作符類。)在同一個字段上創建多個使用不同操作符類的索引是可能的。 如果你確實使用了標準的"C"區域設置,那么你就不需要`_xxx_`_pattern_ops 操作符類,因為使用缺省操作符類的索引可以用于 C 區域里面的模式匹配查詢。 下面的查詢顯示所有已定義的操作符類: ``` SELECT am.amname AS index_method, opc.opcname AS opclass_name FROM pg_am am, pg_opclass opc WHERE opc.opcmethod = am.oid ORDER BY index_method, opclass_name; ``` 一個操作符類實際上只是一個名為_操作符族_的大構造的子集。在這種情況下, 一些數據類型有相同的行為,這對于定義跨數據類型的操作符通常是有用的,并且允許與索引一起使用。 為了這樣做,每種類型的操作符類必須分入相同的操作符族內。跨類型的操作符是這個族的成員, 但是與族內的任何一個類都沒有關系。 這個查詢顯示所有定義的操作符族和每個族內的所有操作符: ``` SELECT am.amname AS index_method, opf.opfname AS opfamily_name, amop.amopopr::regoperator AS opfamily_operator FROM pg_am am, pg_opfamily opf, pg_amop amop WHERE opf.opfmethod = am.oid AND amop.amopfamily = opf.oid ORDER BY index_method, opfamily_name, opfamily_operator; ```
                  <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>

                              哎呀哎呀视频在线观看