forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
45 lines
8.2 KiB
HTML
45 lines
8.2 KiB
HTML
<a name="EN-US_TOPIC_0000001233628617"></a><a name="EN-US_TOPIC_0000001233628617"></a>
|
|
|
|
<h1 class="topictitle1">Constraints on Index Use</h1>
|
|
<div id="body1552357344277"><p id="EN-US_TOPIC_0000001233628617__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_0000001233628617__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></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">TBALE</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="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="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="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="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="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="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="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>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628617__p627815476487">In this example, <strong id="EN-US_TOPIC_0000001233628617__b1714595113614">table1</strong> has two GIN indexes created on the same column <strong id="EN-US_TOPIC_0000001233628617__b109131631872">c_text</strong>, <strong id="EN-US_TOPIC_0000001233628617__b1024813475">idx1</strong> and <strong id="EN-US_TOPIC_0000001233628617__b71611315872">idx2</strong>, but these two indexes are created under different settings of <strong id="EN-US_TOPIC_0000001233628617__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_0000001233628617__ul151982378525"><li id="EN-US_TOPIC_0000001233628617__li81986376526">GIN indexes use different parsers (that is, different delimiters). In this case, the index data of <strong id="EN-US_TOPIC_0000001233628617__b314514281292">idx1</strong> is different from that of <strong id="EN-US_TOPIC_0000001233628617__b1592893413911">idx2</strong>.</li><li id="EN-US_TOPIC_0000001233628617__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_0000001233628617__p52073392410">As a result, using <strong id="EN-US_TOPIC_0000001233628617__b117631112121217">idx1</strong> and <strong id="EN-US_TOPIC_0000001233628617__b1351471441220">idx2</strong> for the same query returns different results.</p>
|
|
<div class="section" id="EN-US_TOPIC_0000001233628617__section183071424185917"><h4 class="sectiontitle">Constraints</h4><p id="EN-US_TOPIC_0000001233628617__p19457182618596">Still use the above example. When:</p>
|
|
</div>
|
|
<ul id="EN-US_TOPIC_0000001233628617__ul1764510431934"><li id="EN-US_TOPIC_0000001233628617__li064513431736">Multiple GIN indexes are created on the same column of the same table.</li><li id="EN-US_TOPIC_0000001233628617__li20645174318319">The GIN indexes use different parsers (that is, different delimiters).</li><li id="EN-US_TOPIC_0000001233628617__li864516431538">The column is used in a query, and an index scan is used in the execution plan.</li></ul>
|
|
<p id="EN-US_TOPIC_0000001233628617__p143842148014">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>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0087.html">Searching for Texts in Database Tables</a></div>
|
|
</div>
|
|
</div>
|
|
|