LINUX.ORG.RU

История изменений

Исправление no-such-file, (текущая версия) :

Покажи-ка метод, как это сделать, не пройдя по списку до этого элемента

Покажи-ка, какой должен быть OFFSET, чтобы идти 20 секунд? Не бывает такого размера индексов (у адекватных людей).

Не угадал. Зависит от размера таблицы и N (и PostgreSQL, в отличие от тебя, это «знает» и использует).

Игрушечные таблицы в принципе не интересны, именно потому, что там без разницы что и как — всё равно (автоматически) быстро.

С чего это он должен лежать в памяти?

С того, что иначе он нафиг не нужен. Если индекс такой огромный, то данных просто охренеть сколько. Это уже совсем другая история.

И с чего это таблица должна сортироваться на диске

С того что часто столько памяти нет, чтобы всю таблицу всосать. Если таблица не игрушечная и есть сортировка, то следует изначально предполагать, что она будет на диске/c диска. Да даже если вся таблица в памяти, но большая, то всё равно пройти по индексу один раз будет быстрее, чем 100500 раз пройти по таблице (для сортировки).

даже в треде уже были ссылки на объяснения, почему индексы неэффективны при больших OFFSET

Индексы эффективны (по сравнению с сортировкой таблицы) при любых OFFSET. Использование больших OFFSET+ORDER проблема именно потому, что эффективности этого нужен индекс, а индекс который подойдёт не всегда возможно/желательно иметь. Конкретно в случае ТС никакой проблемы нет (кроме той, что индекс у него не подхватывается).

Исходная версия no-such-file, :

Покажи-ка метод, как это сделать, не пройдя по списку до этого элемента

Покажи-ка, какой должен быть OFFSET, чтобы идти 20 секунд? Не бывает такого размера индексов (у адекватных людей).

Не угадал. Зависит от размера таблицы и N (и PostgreSQL, в отличие от тебя, это «знает» и использует).

Игрушечные таблицы в принципе не интересны, именно потому, что там без разницы что и как — всё равно (автоматически) быстро.

С чего это он должен лежать в памяти?

С того, что иначе он нафиг не нужен. Если индекс такой огромный, то данных просто охренеть сколько. Это уже совсем другая история.

И с чего это таблица должна сортироваться на диске

С того что часто столько памяти нет, чтобы всю таблицу всосать. Если таблица не игрушечная и есть сортировка, то следует изначально предполагать, что она будет на диске/c диска. Да даже если вся таблица в памяти, но большая, то всё равно пройти по индексу один раз будет быстрее в 100500, чем 100500 раз пройти по таблице (для сортировки).

даже в треде уже были ссылки на объяснения, почему индексы неэффективны при больших OFFSET

Индексы эффективны (по сравнению с сортировкой таблицы) при любых OFFSET. Использование больших OFFSET+ORDER проблема именно потому, что эффективности этого нужен индекс, а индекс который подойдёт не всегда возможно/желательно иметь. Конкретно в случае ТС никакой проблемы нет (кроме той, что индекс у него не подхватывается).