forked from docs/doc-exports
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
47 lines
8.4 KiB
HTML
47 lines
8.4 KiB
HTML
<a name="EN-US_TOPIC_0000001145910691"></a><a name="EN-US_TOPIC_0000001145910691"></a>
|
|
|
|
<h1 class="topictitle1">Constraints on Index Use</h1>
|
|
<div id="body1552357344277"><p id="EN-US_TOPIC_0000001145910691__p1244924082813">The following is an example of using an index. Run the following statements in a database that uses the UTF-8 or GBK encoding:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145910691__screen37811143112516"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">create</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">table1</span><span class="w"> </span><span class="p">(</span><span class="n">c_int</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">c_bigint</span><span class="w"> </span><span class="nb">bigint</span><span class="p">,</span><span class="n">c_varchar</span><span class="w"> </span><span class="nb">varchar</span><span class="p">,</span><span class="n">c_text</span><span class="w"> </span><span class="nb">text</span><span class="p">)</span><span class="w"> </span><span class="k">with</span><span class="p">(</span><span class="n">orientation</span><span class="o">=</span><span class="k">row</span><span class="p">);</span><span class="w"></span>
|
|
|
|
<span class="k">create</span><span class="w"> </span><span class="nb">text</span><span class="w"> </span><span class="k">search</span><span class="w"> </span><span class="n">configuration</span><span class="w"> </span><span class="n">ts_conf_1</span><span class="p">(</span><span class="n">parser</span><span class="o">=</span><span class="n">POUND</span><span class="p">);</span><span class="w"></span>
|
|
<span class="k">create</span><span class="w"> </span><span class="nb">text</span><span class="w"> </span><span class="k">search</span><span class="w"> </span><span class="n">configuration</span><span class="w"> </span><span class="n">ts_conf_2</span><span class="p">(</span><span class="n">parser</span><span class="o">=</span><span class="n">POUND</span><span class="p">)</span><span class="w"> </span><span class="k">with</span><span class="p">(</span><span class="n">split_flag</span><span class="o">=</span><span class="s1">'%'</span><span class="p">);</span><span class="w"></span>
|
|
|
|
<span class="k">set</span><span class="w"> </span><span class="n">default_text_search_config</span><span class="o">=</span><span class="s1">'ts_conf_1'</span><span class="p">;</span><span class="w"></span>
|
|
<span class="k">create</span><span class="w"> </span><span class="k">index</span><span class="w"> </span><span class="n">idx1</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">table1</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">gin</span><span class="p">(</span><span class="n">to_tsvector</span><span class="p">(</span><span class="n">c_text</span><span class="p">));</span><span class="w"></span>
|
|
|
|
<span class="k">set</span><span class="w"> </span><span class="n">default_text_search_config</span><span class="o">=</span><span class="s1">'ts_conf_2'</span><span class="p">;</span><span class="w"></span>
|
|
<span class="k">create</span><span class="w"> </span><span class="k">index</span><span class="w"> </span><span class="n">idx2</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">table1</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">gin</span><span class="p">(</span><span class="n">to_tsvector</span><span class="p">(</span><span class="n">c_text</span><span class="p">));</span><span class="w"></span>
|
|
|
|
<span class="k">select</span><span class="w"> </span><span class="n">c_varchar</span><span class="p">,</span><span class="n">to_tsvector</span><span class="p">(</span><span class="n">c_varchar</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">table1</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">to_tsvector</span><span class="p">(</span><span class="n">c_text</span><span class="p">)</span><span class="w"> </span><span class="o">@@</span><span class="w"> </span><span class="n">plainto_tsquery</span><span class="p">(</span><span class="s1">'¥#@……&**'</span><span class="p">)</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">to_tsvector</span><span class="p">(</span><span class="n">c_text</span><span class="p">)</span><span class="w"> </span><span class="o">@@</span><span class="w"> </span>
|
|
<span class="n">plainto_tsquery</span><span class="p">(</span><span class="s1">'Company'</span><span class="p">)</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">c_varchar</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">null</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">desc</span><span class="w"> </span><span class="k">limit</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001145910691__p627815476487">In this example, <strong id="EN-US_TOPIC_0000001145910691__b1714595113614">table1</strong> has two GIN indexes created on the same column <strong id="EN-US_TOPIC_0000001145910691__b109131631872">c_text</strong>, <strong id="EN-US_TOPIC_0000001145910691__b1024813475">idx1</strong> and <strong id="EN-US_TOPIC_0000001145910691__b71611315872">idx2</strong>, but these two indexes are created under different settings of <strong id="EN-US_TOPIC_0000001145910691__b11777054816">default_text_search_config</strong>. Differences between this example and the scenario where one table has common indexes created on the same column are as follows:</p>
|
|
<ul id="EN-US_TOPIC_0000001145910691__ul151982378525"><li id="EN-US_TOPIC_0000001145910691__li81986376526">GIN indexes use different parsers (that is, different delimiters). In this case, the index data of <strong id="EN-US_TOPIC_0000001145910691__b314514281292">idx1</strong> is different from that of <strong id="EN-US_TOPIC_0000001145910691__b1592893413911">idx2</strong>.</li><li id="EN-US_TOPIC_0000001145910691__li131981437185215">In the specified scenario, the index data of multiple common indexes created on the same column is the same.</li></ul>
|
|
<p id="EN-US_TOPIC_0000001145910691__p52073392410">As a result, using <strong id="EN-US_TOPIC_0000001145910691__b117631112121217">idx1</strong> and <strong id="EN-US_TOPIC_0000001145910691__b1351471441220">idx2</strong> for the same query returns different results.</p>
|
|
<div class="section" id="EN-US_TOPIC_0000001145910691__section183071424185917"><h4 class="sectiontitle">Constraints</h4><p id="EN-US_TOPIC_0000001145910691__p19457182618596">In the preceding example, when:</p>
|
|
</div>
|
|
<ul id="EN-US_TOPIC_0000001145910691__ul1764510431934"><li id="EN-US_TOPIC_0000001145910691__li064513431736">Multiple GIN indexes are created on the same column of the same table.</li><li id="EN-US_TOPIC_0000001145910691__li20645174318319">The GIN indexes use different parsers (that is, different delimiters).</li><li id="EN-US_TOPIC_0000001145910691__li864516431538">The column is used in a query, and an index scan is used in the execution plan.<p id="EN-US_TOPIC_0000001145910691__p127978481015"><a name="EN-US_TOPIC_0000001145910691__li864516431538"></a><a name="li864516431538"></a>To avoid different query results caused by different GIN indexes, ensure that only one GIN index is available on a column of the physical table.</p>
|
|
</li></ul>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0087.html">Table and index</a></div>
|
|
</div>
|
|
</div>
|
|
|