gist-builtin-opclasses.md 10.3 KB
Newer Older
K
KyleZhang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
## 65.2. Built-in Operator Classes

 The core PostgreSQL distribution includes the GiST operator classes shown in [Table 65.1](gist-builtin-opclasses.html#GIST-BUILTIN-OPCLASSES-TABLE). (Some of the optional modules described in [Appendix F](contrib.html) provide additional GiST operator classes.)

**Table 65.1. Built-in GiST Operator Classes**

|                Name                |       Indexable Operators        |  Ordering Operators  |
|------------------------------------|----------------------------------|----------------------|
|             `box_ops`              |         `<< (box, box)`          |  `<-> (box, point)`  |
|          `&< (box, box)`           |                                  |                      |
|          `&& (box, box)`           |                                  |                      |
|          `&> (box, box)`           |                                  |                      |
|          `>> (box, box)`           |                                  |                      |
|          `~= (box, box)`           |                                  |                      |
|          `@> (box, box)`           |                                  |                      |
|          `<@ (box, box)`           |                                  |                      |
|          `&<| (box, box)`          |                                  |                      |
|          `<<| (box, box)`          |                                  |                      |
|          `|>> (box, box)`          |                                  |                      |
|          `|&> (box, box)`          |                                  |                      |
|           `~ (box, box)`           |                                  |                      |
|           `@ (box, box)`           |                                  |                      |
|            `circle_ops`            |      `<< (circle, circle)`       |`<-> (circle, point)` |
|       `&< (circle, circle)`        |                                  |                      |
|       `&> (circle, circle)`        |                                  |                      |
|       `>> (circle, circle)`        |                                  |                      |
|       `<@ (circle, circle)`        |                                  |                      |
|       `@> (circle, circle)`        |                                  |                      |
|       `~= (circle, circle)`        |                                  |                      |
|       `&& (circle, circle)`        |                                  |                      |
|       `|>> (circle, circle)`       |                                  |                      |
|       `<<| (circle, circle)`       |                                  |                      |
|       `&<| (circle, circle)`       |                                  |                      |
|       `|&> (circle, circle)`       |                                  |                      |
|        `@ (circle, circle)`        |                                  |                      |
|        `~ (circle, circle)`        |                                  |                      |
|             `inet_ops`             |        `<< (inet, inet)`         |                      |
|         `<<= (inet, inet)`         |                                  |                      |
|         `>> (inet, inet)`          |                                  |                      |
|         `>>= (inet, inet)`         |                                  |                      |
|          `= (inet, inet)`          |                                  |                      |
|         `<> (inet, inet)`          |                                  |                      |
|          `< (inet, inet)`          |                                  |                      |
|         `<= (inet, inet)`          |                                  |                      |
|          `> (inet, inet)`          |                                  |                      |
|         `>= (inet, inet)`          |                                  |                      |
|         `&& (inet, inet)`          |                                  |                      |
|          `multirange_ops`          |`= (anymultirange, anymultirange)`|                      |
|`&& (anymultirange, anymultirange)` |                                  |                      |
|   `&& (anymultirange, anyrange)`   |                                  |                      |
|  `@> (anymultirange, anyelement)`  |                                  |                      |
|`@> (anymultirange, anymultirange)` |                                  |                      |
|   `@> (anymultirange, anyrange)`   |                                  |                      |
|`<@ (anymultirange, anymultirange)` |                                  |                      |
|   `<@ (anymultirange, anyrange)`   |                                  |                      |
|`<< (anymultirange, anymultirange)` |                                  |                      |
|   `<< (anymultirange, anyrange)`   |                                  |                      |
|`>> (anymultirange, anymultirange)` |                                  |                      |
|   `>> (anymultirange, anyrange)`   |                                  |                      |
|`&< (anymultirange, anymultirange)` |                                  |                      |
|   `&< (anymultirange, anyrange)`   |                                  |                      |
|`&> (anymultirange, anymultirange)` |                                  |                      |
|   `&> (anymultirange, anyrange)`   |                                  |                      |
|`-|- (anymultirange, anymultirange)`|                                  |                      |
|  `-|- (anymultirange, anyrange)`   |                                  |                      |
|            `point_ops`             |       `|>> (point, point)`       | `<-> (point, point)` |
|        `<< (point, point)`         |                                  |                      |
|        `>> (point, point)`         |                                  |                      |
|        `<<| (point, point)`        |                                  |                      |
|        `~= (point, point)`         |                                  |                      |
|         `<@ (point, box)`          |                                  |                      |
|       `<@ (point, polygon)`        |                                  |                      |
|        `<@ (point, circle)`        |                                  |                      |
|             `poly_ops`             |     `<< (polygon, polygon)`      |`<-> (polygon, point)`|
|      `&< (polygon, polygon)`       |                                  |                      |
|      `&> (polygon, polygon)`       |                                  |                      |
|      `>> (polygon, polygon)`       |                                  |                      |
|      `<@ (polygon, polygon)`       |                                  |                      |
|      `@> (polygon, polygon)`       |                                  |                      |
|      `~= (polygon, polygon)`       |                                  |                      |
|      `&& (polygon, polygon)`       |                                  |                      |
|      `<<| (polygon, polygon)`      |                                  |                      |
|      `&<| (polygon, polygon)`      |                                  |                      |
|      `|&> (polygon, polygon)`      |                                  |                      |
|      `|>> (polygon, polygon)`      |                                  |                      |
|       `@ (polygon, polygon)`       |                                  |                      |
|       `~ (polygon, polygon)`       |                                  |                      |
|            `range_ops`             |     `= (anyrange, anyrange)`     |                      |
|     `&& (anyrange, anyrange)`      |                                  |                      |
|   `&& (anyrange, anymultirange)`   |                                  |                      |
|    `@> (anyrange, anyelement)`     |                                  |                      |
|     `@> (anyrange, anyrange)`      |                                  |                      |
|   `@> (anyrange, anymultirange)`   |                                  |                      |
|     `<@ (anyrange, anyrange)`      |                                  |                      |
|   `<@ (anyrange, anymultirange)`   |                                  |                      |
|     `<< (anyrange, anyrange)`      |                                  |                      |
|   `<< (anyrange, anymultirange)`   |                                  |                      |
|     `>> (anyrange, anyrange)`      |                                  |                      |
|   `>> (anyrange, anymultirange)`   |                                  |                      |
|     `&< (anyrange, anyrange)`      |                                  |                      |
|   `&< (anyrange, anymultirange)`   |                                  |                      |
|     `&> (anyrange, anyrange)`      |                                  |                      |
|   `&> (anyrange, anymultirange)`   |                                  |                      |
|     `-|- (anyrange, anyrange)`     |                                  |                      |
|  `-|- (anyrange, anymultirange)`   |                                  |                      |
|           `tsquery_ops`            |     `<@ (tsquery, tsquery)`      |                      |
|      `@> (tsquery, tsquery)`       |                                  |                      |
|           `tsvector_ops`           |     `@@ (tsvector, tsquery)`     |                      |

 For historical reasons, the `inet_ops` operator class is not the default class for types `inet` and `cidr`. To use it, mention the class name in `CREATE INDEX`, for example

```
CREATE INDEX ON my_table USING GIST (my_inet_column inet_ops);

```