Size: a a a

pgsql – PostgreSQL

2021 January 19

am

a m in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
йопта

А если записей дохералион :?
Да LIMIT 1 везде же.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
йопта

А если записей дохералион :?
Ну так индекс-то подходящий есть, я надеюсь? ;)
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
a m
Да LIMIT 1 везде же.
Который отрабатывает после ордера
источник

VF

Vlad Faust in pgsql – PostgreSQL
Мне кажется, что вот этого достаточно будет (добавить ALL и LIMIT 1 в конце):

   (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_queued', 'parsing_in_progress')
     ORDER BY "file_last_modified_at" ASC
     LIMIT 1
   ) UNION ALL (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_succeeded', 'parsing_failed', 'undefined')
     ORDER BY "file_last_modified_at" DESC
     LIMIT 1
   ) LIMIT 1
источник

VF

Vlad Faust in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
Который отрабатывает после ордера
На ордер есть индекс, конечно
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Vlad Faust
Мне кажется, что вот этого достаточно будет (добавить ALL и LIMIT 1 в конце):

   (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_queued', 'parsing_in_progress')
     ORDER BY "file_last_modified_at" ASC
     LIMIT 1
   ) UNION ALL (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_succeeded', 'parsing_failed', 'undefined')
     ORDER BY "file_last_modified_at" DESC
     LIMIT 1
   ) LIMIT 1
Ага, и в любом случае будет запись из первой таблички.
Если есть по условиям хоть одна запись
источник

VF

Vlad Faust in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
Ага, и в любом случае будет запись из первой таблички.
Если есть по условиям хоть одна запись
Отлично, ведь у неё бОльший приоритет
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vlad Faust
Мне кажется, что вот этого достаточно будет (добавить ALL и LIMIT 1 в конце):

   (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_queued', 'parsing_in_progress')
     ORDER BY "file_last_modified_at" ASC
     LIMIT 1
   ) UNION ALL (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_succeeded', 'parsing_failed', 'undefined')
     ORDER BY "file_last_modified_at" DESC
     LIMIT 1
   ) LIMIT 1
Ну так это, как раз, порядка не гарантирует (уже писал). Почему PostgreSQL обязан выполнять первый в тексте вложенный запрос первым, а не наоборот?
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Vlad Faust
Отлично, ведь у неё бОльший приоритет
Оно так и всегда будет, запрос то первый.
источник

VF

Vlad Faust in pgsql – PostgreSQL
😁
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Yaroslav Schekin
Ну так это, как раз, порядка не гарантирует (уже писал). Почему PostgreSQL обязан выполнять первый в тексте вложенный запрос первым, а не наоборот?
Проходит сверху вниз.

Он сделал первый селект, увидел union
сделал второй селект
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
Ага, и в любом случае будет запись из первой таблички.
Если есть по условиям хоть одна запись
Логически — нет. Планировщику почему-то "захочется" иначе — и будет наоборот.
Я не вижу, почему нет.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
Проходит сверху вниз.

Он сделал первый селект, увидел union
сделал второй селект
Планировщик работает совсем не так, вообще-то. ;)
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Он разбивает на селекты, и уже внутри селектов выставляет приоритеты: есть ли ордер и так далее
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Селект сам по себе последний
источник

VF

Vlad Faust in pgsql – PostgreSQL
Well. Допустим, мы не уверены в порядке. Можно тогда ORDER BY запихнуть по статусу, как привели в пример выше
источник

A

Alexandr in pgsql – PostgreSQL
Добрый день! практически все активные сессии висят с  LWLock: SubtransControlLock . Подскажите как искать причину?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
Селект сам по себе последний
Ну и что? Запрос-то недетерминированный, PostgreSQL имеет право возвращать любой из результатов, если это планировщику "покажется" выгоднее... да и даже вообще без причин. ;)
источник

VF

Vlad Faust in pgsql – PostgreSQL
Vlad Faust
Well. Допустим, мы не уверены в порядке. Можно тогда ORDER BY запихнуть по статусу, как привели в пример выше
(SELECT ...) UNION ALL (SELECT ...) ORDER BY (status IN (...)) LIMIT 1
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Yaroslav Schekin
Ну и что? Запрос-то недетерминированный, PostgreSQL имеет право возвращать любой из результатов, если это планировщику "покажется" выгоднее... да и даже вообще без причин. ;)
Хз, мне на работе объясняли что когда юнион, то он берёт первый, а затем второй.
источник