<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY?</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html</link>
    <description>Всем привет.&lt;br&gt;&lt;br&gt;Такой вопрос:&lt;br&gt;&lt;br&gt;Как можно ускорить операции LIMIT, OFFSET и ORDER BY для огромных (порядка 1-10 GB) таблиц при обычных SELECT&apos;ах?&lt;br&gt;</description>

<item>
    <title>PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY? (Nirnroot)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html#7</link>
    <pubDate>Sat, 07 Aug 2010 02:10:17 GMT</pubDate>
    <description>Теоретически можно и не удалять строки сразу, а только помечать как удаленные.&lt;br&gt;</description>
</item>

<item>
    <title>PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY? (kutsy)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html#6</link>
    <pubDate>Mon, 02 Aug 2010 03:33:21 GMT</pubDate>
    <description>Спасибо.&lt;br&gt;Я понял.&lt;br&gt;</description>
</item>

<item>
    <title>PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY? (parad)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html#5</link>
    <pubDate>Mon, 02 Aug 2010 00:40:43 GMT</pubDate>
    <description>сходу креативится одно более менее решение, но оно зависит от частоты и объемов удаляемых строк. до определенных цифр( можете посчетать сами )) ) будет работать быстрее оффсета и лимита.&lt;br&gt;&lt;br&gt;- сделать проинтексированный столбец-нумератор как описано выше.&lt;br&gt;- создать таблицу, в которую будут сохранятся удаляемые идентификаторы.&lt;br&gt;- написать хранимку, выполняющую следующее:&lt;br&gt;&lt;br&gt;...&lt;br&gt;select count(*) into i_count from saved_deleted where some_id&amp;lt;=&#091;offset&#093;; -- счетаем сколько было удалено в оффсете.&lt;br&gt;select ... where ( row_id &amp;gt;= &#091;offset&#093; - i_count )and( row_id &amp;lt; &#091;offset+limit&#093; - i_count ); -- селектим учитывая поправку на удаленные.&lt;br&gt;...&lt;br&gt;&lt;br&gt;периодически можно уплотнять счетчик по крону - черевато блокировкой таблицы на время.&lt;br&gt;если есть возможность - повторно использовать удаленные идентификаторы.&lt;br&gt;&lt;br&gt;всегда можно улучшить. все зависит от... )&lt;br&gt;</description>
</item>

<item>
    <title>PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY? (kutsy)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html#4</link>
    <pubDate>Sun, 01 Aug 2010 16:23:39 GMT</pubDate>
    <description>&amp;gt;в зависимости от требований. к примеру вполне нормальная картина работы форума( на &lt;br&gt;&amp;gt;страницу к примеру 20 тем ): &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; - модераторы удаляют тему с идентификатором 105. получается, что для 6-ой &lt;br&gt;&amp;gt;странице( 100-119 ) списка тем у нас не хватает 105 чтобы &lt;br&gt;&amp;gt;ровно вывести 20. &lt;br&gt;&amp;gt; - однако лимит с офсетом выведут 100-120 без 105. &lt;br&gt;&amp;gt; - черевато только тем, что и на 7ой странице продублируется топик &lt;br&gt;&amp;gt;с номером 120. &lt;br&gt;&amp;gt; - что не есть страшно. зато скорость. &lt;br&gt;&lt;br&gt;Ага, я понял.&lt;br&gt;Но в данном случаи как раз критично чтобы на странице было именно 20 тем (к примеру).&lt;br&gt;&lt;br&gt;Я думал о том, что нужно на удаление записи вешать триггер, что будет изменять это поле, чтобы было по-порядку, начиная с удаляемой записи и до конца. Остаётся только попробовать насколько это будет быстро для таблиц подобного размера.&lt;br&gt;&lt;br&gt;Или может есть более лучшее решение?&lt;br&gt;</description>
</item>

<item>
    <title>PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY? (parad)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html#3</link>
    <pubDate>Sun, 01 Aug 2010 13:03:15 GMT</pubDate>
    <description>в зависимости от требований. к примеру вполне нормальная картина работы форума( на страницу к примеру 20 тем ):&lt;br&gt;&lt;br&gt; - модераторы удаляют тему с идентификатором 105. получается, что для 6-ой странице( 100-119 ) списка тем у нас не хватает 105 чтобы ровно вывести 20.&lt;br&gt; - однако лимит с офсетом выведут 100-120 без 105.&lt;br&gt; - черевато только тем, что и на 7ой странице продублируется топик с номером 120.&lt;br&gt; - что не есть страшно. зато скорость.&lt;br&gt;</description>
</item>

<item>
    <title>PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY? (kutsy)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html#2</link>
    <pubDate>Sun, 01 Aug 2010 04:01:23 GMT</pubDate>
    <description>&amp;gt;ввести столбец с идентификатором записи, проиндексировать по нему и выгребать: &lt;br&gt;&amp;gt;select ... where ( row_id &amp;gt;= &#091;offset&#093; )and( row_id &amp;lt; &#091;offset+limit&#093; )&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;пс. 10гб - это очень мало. огромным тут и не пахнет, тем &lt;br&gt;&amp;gt;более для постгри. ) &lt;br&gt;&lt;br&gt;Получается, что это будет что-то типа обычного идентификатора (ID), но его нужно будет держать жестко по-порядку без прерываний. Верно?&lt;br&gt;</description>
</item>

<item>
    <title>PostgreSQL: Как ускорить операции LIMIT, OFFSET, ORDER BY? (parad)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/681.html#1</link>
    <pubDate>Sat, 31 Jul 2010 21:52:10 GMT</pubDate>
    <description>ввести столбец с идентификатором записи, проиндексировать по нему и выгребать:&lt;br&gt;select ... where ( row_id &amp;gt;= &#091;offset&#093; )and( row_id &amp;lt; &#091;offset+limit&#093; )&lt;br&gt;&lt;br&gt;пс. 10гб - это очень мало. огромным тут и не пахнет, тем более для постгри. )&lt;br&gt;</description>
</item>

</channel>
</rss>
