Re: GIN индекс по JSONB и Recheck

From: Dmitry E(dot) Oboukhov <unera(at)debian(dot)org>
To: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>, Sergei Kornilov <sk(at)zsrv(dot)org>
Subject: Re: GIN индекс по JSONB и Recheck
Date: 2019-05-15 19:26:27
Message-ID: 993671557948387@iva1-9be92bdead40.qloud-c.yandex.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

<br /><blockquote><p><br /></p><blockquote class="b4fd5cf2ec92bc68cb898700bb81355fwmi-quote"> Возможно из за этого прогнозное время отличается от реального на два порядка?<br /></blockquote><p><br />Что такое "прогнозное время"?<br />Планировщик не прогнозирует время выполнения запроса. План выбирается с минимальной оценённой стоимостью выполнения, но это не время.<br /></p></blockquote><div><span style="background-color:rgba( 255 , 255 , 255 , 0 )">Planning time: 0.092 ms<br />Execution time: 2.331 ms</span><br /></div><div><span style="background-color:rgba( 255 , 255 , 255 , 0 )"><br /></span></div><div><span style="background-color:rgba( 255 , 255 , 255 , 0 )">что такое Planning time тогда?</span></div><div><span style="background-color:rgba( 255 , 255 , 255 , 0 )"><br /></span></div><div><span style="background-color:rgba( 255 , 255 , 255 , 0 )">в случае с jsonb_path_ops оно почти совпадает с временем Execution</span></div><div><span style="background-color:rgba( 255 , 255 , 255 , 0 )"><br /></span></div><div><span style="background-color:rgba( 255 , 255 , 255 , 0 )">это время работы планировщика?</span></div><div><br /></div><br /><blockquote><blockquote class="b4fd5cf2ec92bc68cb898700bb81355fwmi-quote"> 1. Можно ли избавиться от Recheck по jsonb - GIN индексу<br /></blockquote><p><br />Нет. Recheck тут не только от gin, но и от bitmap.<br /><br /></p><blockquote class="b4fd5cf2ec92bc68cb898700bb81355fwmi-quote"> 2. Если нет - можно ли избавиться от Recheck Removed хотя бы?<br /></blockquote><p><br />При обходе bitmap индекс сам может запросить recheck значения, если реализация этого ops считает, это значение подойти под условие может, но не обязательно.<br /></p></blockquote>реализация опс<div><br /></div><div>значит ли это что если написать свой опс который никогда не запросит речек, то проблему можно решить?<br /><div><br /></div><div><br /><blockquote><blockquote class="b4fd5cf2ec92bc68cb898700bb81355fwmi-quote"> 3. Если смотреть на оба EXPLAIN то можно видеть что в обоих случаях выбираются ВСЕ совпадения индекса (в БД на 20 млн записей содержится ровно 37 записей удовлетворяющих поисковому запросу). Вопрос: можно ли перестроить запрос чтобы выбиралось не более LIMIT записей? Или поясните - почему так происходит и как с этим жить?<br /></blockquote><p><br />Потому что это Bitmap Index Scan. Index Scan по GIN невозможен, amgettuple не представлен.<br /></p></blockquote>хм</div><div>невозможен скан в текущей реализации или в принципе?</div><div><br /></div><div><br /><blockquote><blockquote class="b4fd5cf2ec92bc68cb898700bb81355fwmi-quote"> Ну а поскольку запрос - поисковый, то могут запросить как нечто хорошо селективное, так и нечто слабо селективное. То есть если он будет в промежутке выбирать скажем из 10 млн записей 1 млн а потом от него брать LIMIT 10 - то это будет непорядок.<br /></blockquote><p><br />Тут можно gin_fuzzy_search_limit покрутить - как раз верхний лимит результата для GIN.<br /></p></blockquote><div><br /></div>доберусь до компа посмотрю эту ручку - спасибо!<br /></div></div>

Attachment Content-Type Size
unknown_filename text/html 4.1 KB

In response to

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Dmitry E. Oboukhov 2019-05-16 06:06:31 Re: GIN индекс по JSONB и Recheck
Previous Message Sergei Kornilov 2019-05-15 16:51:30 Re: GIN индекс по JSONB и Recheck