Сколько записей возвращает этот запрос?

23 ответов

31 просмотр
kirill
screenshot

SELECT COUNT(T1._Q_000_F_000RRef), SUM(CASE WHEN (T2.Fld1697RRef IS NOT NULL) AND (T2.Fld1697RRef IN ('\\217\\242\\332o\\343\\334\\252P\\021\\353\\310\\362\\031\\210\\330\\023'::bytea, '\\217\\242\\332o\\343\\334\\252P\\021\\353\\310\\362\\031\\210\\330\\026'::bytea)) THEN CAST(1 AS NUMERIC) ELSE CAST(0 AS NUMERIC) END), SUM(CASE WHEN (T1._Q_000_F_000RRef IN ('\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea)) THEN CAST(1 AS NUMERIC) ELSE CAST(0 AS NUMERIC) END), SUM(CASE WHEN (T2.Fld1697RRef IS NOT NULL) AND (NOT (((T2.Fld1697RRef IN ('\\217\\242\\332o\\343\\334\\252P\\021\\353\\310\\362\\031\\210\\330\\023'::bytea, '\\217\\242\\332o\\343\\334\\252P\\021\\353\\310\\362\\031\\210\\330\\026'::bytea))))) THEN CAST(1 AS NUMERIC) ELSE CAST(0 AS NUMERIC) END) FROM TEMPTABLE T1 LEFT OUTER JOIN (SELECT T3._Fld1696RRef AS Fld1696RRef, T3._Fld1697RRef AS Fld1697RRef FROM _InfoRgSL2446 T3 WHERE (T3._Fld1696RRef IN (SELECT T4._Q_000_F_000RRef AS Q_001_F_000RRef FROM TEMPTABLE T4))) T2 ON (T1._Q_000_F_000RRef = T2.Fld1696RRef)

kirill
screenshot

А время выполнения -- в секундах тут? Или это вообще какой-то промежуточный запрос был к временной таблицэ?

kirill
да секунды

То есть у вас в psql запрос выполняется 60 секунд, а из 1С -- 400. Что происходит? В psql отправляли данные той описи, которые только что закэшыровались?

kirill
через 1с нет параллизма

Да у вас и в psql там всего на три параллелилось. Если бы оно идеально ускорялось -- было бы 180 секунд. Но у вас-то, похожэ, оно в диск упирается -- потому можэте поиграться из psql, результаты с паралеллизмом и без и с более массовым не должны отличаться так разительно.

kirill
screenshot

Вт Индексировал по полям поиска/соединения?

Zaki- Автор вопроса
kirill
screenshot

тут в первом запросе не хватает индекса "ИНДЕКСИРОВАТЬ ПО ЭКД" с таким количеством данных

Zaki
тут в первом запросе не хватает индекса "ИНДЕКСИ...

Чисто по ЭКД -- не нужэн ни за чем, оно по другому полю соединяется/ищется. Индэкс (ОПись, ЭКД) топикстартер ужэ создал, и говорит, что вообще не используется.

Zaki- Автор вопроса
Ilya Anfimov
Чисто по ЭКД -- не нужэн ни за чем, оно по другому...

ну мы гадаем на кофейной гуще так как запросы у него постоянно разные на выходе, надо упрощать все и смотреть план запроса, лучше пусть dump таблиц сделает тогда сможем у себя посмотреть

Zaki
ну мы гадаем на кофейной гуще так как запросы у не...

так был упрощен запрос на чистый селект, сказали 1с не рекомендует так, ок добил, но по плану проблема в другом

kirill
через 1с нет параллизма

Тут ещё такое дело -- если там объём результатов примерно как вы показывали -- то дажэ на самом бытовом SSD из современных эти 15 гигабайт данных должны читаться минуты полторы. А когда не в shared_buffers только три гигабайта -- вообще 20 секунд. Как у вас получается, что оно читает 6 минут и минуту -- тожэ хорошо бы начать выяснять. Ну там, скорость seq scan померить, скорость index-only scan просто на эту таблицу (какую-нибудь произвольную выборку с лимитом 10,000,000 и запретом на seq scan). Что-то тут пока что мне непонятное происходит, и не очень быстрое.

kirill
через 1с нет параллизма

Это, разумеется, не отменяет вопросов -- почему не идёт index-only scan. Я сейчас экспериментирую -- нет, уж 14-то вообще подхватывает примерно в любых ситуацыях.

Ilya Anfimov
Это, разумеется, не отменяет вопросов -- почему не...

пока надо с этим разобраться, 300с очень долго

kirill
пока надо с этим разобраться, 300с очень долго

Я вообще не очень понял смысл такого переписывания.

Ilya Anfimov
Я вообще не очень понял смысл такого переписывания...

я тоже не понимаю, но готов поэксперементировать для помогающих. Как я только не писал, к итогам обращение происходит долгое

kirill
пока надо с этим разобраться, 300с очень долго

Ну, то есть оно сделает примерно тожэ самое -- только перечисление операцый чуть в менее оптимальном порядке, скорее всего. Ну... Ну, ожыдаемо, что получен примерно тот жэ результат.

kirill
я тоже не понимаю, но готов поэксперементировать д...

Я бы, на вашэм месте, продолжыл разборки с извлечённым запросом (которые вы начали в начале). Там минимум два перспективных направления.

Ilya Anfimov
Я бы, на вашэм месте, продолжыл разборки с извлечё...

он наверное поэтому и обращается к кластерному индексу, там все поля есть

Ilya Anfimov
То есть у вас в psql запрос выполняется 60 секунд,...

Для идентичности проверки нужно включить параметры сессии, которые накладывает платформа. SET SESSION default_with_oids = on; SET client_min_messages=error; SET lc_messages to 'en_US.UTF-8'; SET enable_mergejoin = off; SET standard_conforming_strings = off; SET escape_string_warning = off; SET cpu_operator_cost = 0.001; SET lock_timeout = 20000;

Дмитрий Комаров
Для идентичности проверки нужно включить параметры...

Тут реалистично можэт повлиять на план разве только enable_mergejoin -- да и то... Не на это.

Ilya Anfimov
Тут реалистично можэт повлиять на план разве толь...

Не вникал в ваши планы запросов, поэтому указал, как есть. А так да, обычно мердж не бьется с платформой, остальное для совместимости.

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

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта