|
78 | 78 | to create smoc indices. An index speeds up the execution |
79 | 79 | time of operators <link |
80 | 80 | linkend="op.over"><literal><@</literal></link>, <link |
81 | | - linkend="op.over"><literal>@</literal></link>, <link |
| 81 | + linkend="op.over"><literal>@></literal></link>, <link |
82 | 82 | linkend="op.over"><literal>&&</literal></link>, <link |
83 | 83 | linkend="op.equal"><literal>=</literal></link>, and <link |
84 | | - linkend="op.equal"><literal>!=</literal></link>. |
| 84 | + linkend="op.equal"><literal><></literal></link>. |
| 85 | + </para> |
| 86 | + <para> |
| 87 | + The index works by casting all contained smocs to a fixed level, and |
| 88 | + for each pixel at that level, storing which smocs overlap with that |
| 89 | + pixel. This is especially beneficial for "overlaps" queries using |
| 90 | + the <literal>&&</literal> operator. Two levels of granularity |
| 91 | + are provided: the default opclass <literal>smoc_gin_ops</literal> |
| 92 | + works on level 5 with a resolution of 12288 pixels, while the |
| 93 | + opclass <literal>smoc_gin_ops_fine</literal> works on level 8 with |
| 94 | + 786432 pixels. The downside of that approach is that storing large |
| 95 | + smocs like "all sky" (<literal>0/0-11</literal>) produces a large |
| 96 | + number of index entries. |
85 | 97 | </para> |
86 | 98 | <example> |
87 | 99 | <title>Index of smoc coverage objects</title> |
|
91 | 103 | <![CDATA[);]]> |
92 | 104 | <![CDATA[-- Put in data now]]> |
93 | 105 | <![CDATA[CREATE INDEX ON ivoa USING GIN (coverage);]]> |
| 106 | +<![CDATA[-- Alternative index with more detail]]> |
| 107 | +<![CDATA[CREATE INDEX ivoa_fine_idx ON ivoa USING GIN (coverage smoc_gin_ops_fine);]]> |
94 | 108 | </programlisting> |
95 | 109 | </example> |
96 | 110 |
|
|
0 commit comments