Это может вам IDE подставляет? вообще подстановка не должна работать в

OFFSET, Илья прав

russian programming pgsql

33 ответов

rows, err := s.db.QueryContext(ctx, `SELECT * FROM meta_urls OFFSET $1`, 1000) Вот такое :) Из кода вызываю.

Anton Kucherov
rows, err := s.db.QueryContext(ctx, `SELECT * FROM...

Это норм, будет работать. Это просто replacement работает:)

Альберт-Степанцев Автор вопроса
Anton Kucherov
rows, err := s.db.QueryContext(ctx, `SELECT * FROM...

ну это какая-то ORM, хреен знает, что она под капотом делает вы реальные запросы к БД отлаживайте сначала а потом уже в код переносите

Альберт Степанцев
ну это какая-то ORM, хреен знает, что она под капо...

Нет там никакой ORM в pg_stats_activity запрос выглядит абсолютно так же. Да и вопрос не в подстановке или корректности запроса. А в том будет от консистентно данные в одном и том же порядке каждый раз выдавать или нет.

Ilya Anfimov
Delphi?

Go. То что запрос работает я проверил. А вот в консистентности его сомневаюсь. Эксперимент можнт быть просто совпадением. Потому что данных не много и они активно не меняются.

Anton Kucherov
Нет там никакой ORM в pg_stats_activity запрос выг...

заинсертить новые данные и проверить

Альберт-Степанцев Автор вопроса
Oleksandr Danylenko
заинсертить новые данные и проверить

Лучше апдейтнуть. Порядок, без явного указания порядка, не определен. Точка. Аксиома. Обсуждению не подлежит.

Anton Kucherov
Go. То что запрос работает я проверил. А вот в кон...

Про консистентность вам ужэ всё сказали. Да это и так очевидно, на самом деле.

Альберт Степанцев
Лучше апдейтнуть. Порядок, без явного указания пор...

Порядок не определен да, он оно же берет OFFSET по какому то полю. Пускай и неявно, на уровне БД.

Anton Kucherov
Go. То что запрос работает я проверил. А вот в кон...

Проблема в кадрах. Гошников умеющие в СУБД маловато😔

Альберт-Степанцев Автор вопроса
Dmitry M
Проблема в кадрах. Гошников умеющие в СУБД маловат...

Ну видите же - человек стремится. Давайте помогать.

Anton Kucherov
rows, err := s.db.QueryContext(ctx, `SELECT * FROM...

Действительно, сейчас проверил -- с чем-то спутал, видимо. Параметры в LIMIT работают.

Anton Kucherov
Порядок не определен да, он оно же берет OFFSET п...

Оно берёт OFFSET от того, как записи по факту пришли от исполнителя. (А приходить они могут очень по-всякому). (И это сейчас. Вот добавят ещё немного противоестественного интеллекта -- и он сам будет определять, что порядок записей неопределён, и можно отдавать n первых попавшыхся).

Ilya Anfimov
Действительно, сейчас проверил -- с чем-то спутал,...

👍 А почему им не работать? Мы часто пагинированные запросы делаем.

Anatoliy Burov
👍 А почему им не работать? Мы часто пагинированные...

На больших значениях offset начинает конкретно лагать

Dmitriy Sviridov
На больших значениях offset начинает конкретно лаг...

Это не исключает того факта, что туда можно параметризованные данные передавать, а не хардкод😊

Anatoliy Burov
Это не исключает того факта, что туда можно параме...

Ну да. Но в случае выше гошка, там в int строка не пролезет

Dmitriy Sviridov
На больших значениях offset начинает конкретно лаг...

Ага. У меня на таблице с 3 000 000 000 записями оффсет на 1 000 000 000 около 20 минут бежит 🙂

Anton Kucherov
Ага. У меня на таблице с 3 000 000 000 записями оф...

Жесть. Нафига вам такое? У нас бизнес, если через 5 сек данные не получает, уже бубнить начинает😃

Anton Kucherov
Ага. У меня на таблице с 3 000 000 000 записями оф...

А если юзер может дёргать "последние" страницы пагинатора, то проду может внезапно стать плохо

Anatoliy Burov
Жесть. Нафига вам такое? У нас бизнес, если через ...

Ну вообще нам такое не надо. Это я играюсь потому что мне надо большую БД сконвертить в другую схему, без остановки сервера. т.е. обычный pg_dump кажется не подходит. Там еще по пути надо данные в некоторых полях преобразовывать. Так это это я просто дергаю Long Running Task.

Anton Kucherov
Ну вообще нам такое не надо. Это я играюсь потому ...

А чего нельзя WHERE id > N ORDER BY id ASC LIMIT 1000? Тогда скорость выборки будет примерно одинаковой

Anton Kucherov
Ну вообще нам такое не надо. Это я играюсь потому ...

Так переливайте пачками через select...for update skip locked

Anton Kucherov
ID это URL. Текстовое поле 😂

Ну по нему, по идее, можно тоже сортировать

Dmitriy Sviridov
Ну по нему, по идее, можно тоже сортировать

Отсортировать можно. А как больше (>) применить к строке? Чтобы по 1000 записей выбирало ? Больше последней строки из предидущей пачки? Оно точно так будет работать? Будет просто строки сравнивать побайтово?

Anton Kucherov
Отсортировать можно. А как больше (>) применить к ...

>А как больше (>) применить к строке? Как всегда -- пишэшь > , слева одну строку, справа другую. >Оно точно так будет работать? А куда оно денется? >Будет просто строки сравнивать побайтово? Будет сравнивать в соответствии с указанным collation order. Лучшэ почитать описание строковых операторов postgres, если хотите деталей.

Anton Kucherov
Отсортировать можно. А как больше (>) применить к ...

Более развернуто https://postgrespro.ru/docs/postgresql/14/collation

Dmitry M
Более развернуто https://postgrespro.ru/docs/postg...

С другой стороны, если человек сам по себе порядок не важэн -- то любой сработает. Особенно если на нём pkey (если нет -- то, понятно, могут быть равные строки и просто > ужэ не обойдёшься). Ну, пока опять версия glibc не поменяется, хе-хе.

Похожие вопросы