
WoodyFire
25.06.2017
19:19:20
да, согласен. loops - должно быть как можно меньше. Но при этом памяти еще должно использоваться тоже не много

Darafei
25.06.2017
19:20:39
кому именно и почему оно "должно"?
есть полтора критерия для оптимизации запроса:
- он должен быть читаемым
- он должен выполняться за приемлемое время

Anton [Mgn, az09@osm]
25.06.2017
19:21:57
компьютер должен быть производительным, тихим, дешевым. выбрать два из трёх

Google

Артур
25.06.2017
19:22:06
@Komzpa вопрос к тебе. Если, например, написал хитрый запрос и не хочу чтобы он только у меня хранился, как поделиться с сообществом.
Не только для линча, но и для еще и увеличения информ базы
м.б. есть какой-то ресурс-копилка SQL-запросов

Anton [Mgn, az09@osm]
25.06.2017
19:23:11
гитхаб?

Артур
25.06.2017
19:23:34

WoodyFire
25.06.2017
19:23:49
эм... для себя понял, что нужно стараться избегать цикличность по возможности и использовать только те данные от которых зависят результаты. Это влечет уменьшение использования времени выполнения и использования памяти.

Anton [Mgn, az09@osm]
25.06.2017
19:23:59
или на стековерфлоу - "вот есть ответ, задавайте ваш вопрос"? ))

Артур
25.06.2017
19:24:56
Или я не прав?

Anton [Mgn, az09@osm]
25.06.2017
19:25:13
ты прав. я шучу

WoodyFire
25.06.2017
19:25:41

Anton [Mgn, az09@osm]
25.06.2017
19:25:44

Артур
25.06.2017
19:26:24

Darafei
25.06.2017
19:27:03
на один запрос я пишу gist

Google

Darafei
25.06.2017
19:27:35
если gist запостить в твиттер, и в нём есть описание, на него начинают приходить из гугла :)

Артур
25.06.2017
19:29:20
На английском описывать?
м.б. вопрос тупой. Но я не носитель английского языка. Буду переводить через гугл.
Если это приемлемо - буду делать так

Stas
25.06.2017
19:31:57
https://lists.debian.org/debian-devel/2017/06/msg00308.html

Darafei
25.06.2017
19:32:07
лучший способ писать на английском - писать в гугл-переводчике на английском и смотреть, что получается в переводе на русский. править и упрощать до тех пор, пока в переводе на русский не будет правильно.

WoodyFire
25.06.2017
19:33:01

Stas
25.06.2017
19:33:32
https://lists.debian.org/debian-devel/2017/06/msg00308.html
The issue was being investigated by the OCaml community since
2017-01-06, with reports of malfunctions going at least as far back as
Q2 2016. It was narrowed down to Skylake with hyper-threading, which is
a strong indicative of a processor defect. Intel was contacted about
it, but did not provide further feedback as far as we know.
вот парням хороший баг попался

WoodyFire
25.06.2017
19:33:36
я его переписал полностью и получил вот такой вид
я предпочту второй вариант )))) не потому-что я написал, а потому-что он быстрее

Darafei
25.06.2017
19:37:55
я правильно понимаю, что достаточно было порядок join-ов поменять? :)

WoodyFire
25.06.2017
19:39:02
вот только базы той нет к сожалению, чтобы погонять запрос

Darafei
25.06.2017
19:42:08
я бы первым шагом все джоины переписал на запятую, а условия джоина вынес в where - обычно этого хватает и на этом всё заканчивается

WoodyFire
25.06.2017
19:44:16
по результату

Darafei
25.06.2017
19:47:26
даже в твоём можно сильно повысить читаемость.
энтеров перед закрывающими и после открывающих скобок насыпать.
уровни вложенности поровнять (у тебя group by одного запроса на одном уровне с мясом другого)
p.is_closed != true -> not p.is_closed

WoodyFire
25.06.2017
19:51:27

Darafei
25.06.2017
19:51:54
DataGrip такое ровняет запросто

Google

Max
25.06.2017
19:53:10

Darafei
25.06.2017
19:53:43

WoodyFire
25.06.2017
19:55:04
кстати вопрос на засыпку по поводу двойных ковычек. Может я чего еще не вычитал. Вот представленный код выше
SELECT *
FROM son
INNER JOIN father ON son.father_id=father.id
INNER JOIN grandfather ON father.grandfather_id=grandfather.id;
у меня не выполнился так как я не использовал схему public. Пришлось дописывать "testCode" - имя используемой схемы. Есть дргуие варианты без двойных кавычек?

Darafei
25.06.2017
19:55:31
да, не использовать кемелкейс в базе

WoodyFire
25.06.2017
19:56:41

Darafei
25.06.2017
19:57:30

WoodyFire
25.06.2017
19:58:40
)))) понятно. спс. Но все же именно его я больше предпочитаю
За вот эту строчку кода "p.is_closed != true -> not p.is_closed" спасибо.

Max
25.06.2017
20:04:12
именно он, да
Подскажите, пожалуйста, он уже нормально все схемы отображает?
У меня долгое время только public открывался. Это была одна из причин почему дальше тестов работать с ним не стал

Darafei
25.06.2017
20:06:19
там в списке схем последний элемент - серенькое Schemas.... кликни по нему и включи в общем виде те схемы, которые тебе нужны.

WoodyFire
25.06.2017
20:07:29
я правильно понял вот про этот зверь речь. https://habrahabr.ru/company/JetBrains/blog/325066/

Max
25.06.2017
20:07:43

Darafei
25.06.2017
20:08:45
0xDBE

WoodyFire
25.06.2017
20:11:01
этот зверь стоит 53-х баксов?

Darafei
25.06.2017
20:12:30
мне окупился.
а так, всегда найдётся кто-то, кому дорого :)

Max
25.06.2017
20:14:28
Думаю там триальная версия есть. В postgres провосходный psql, но из консоли не всегда удобно отлаживать запросы.

WoodyFire
25.06.2017
20:14:51

Darafei
25.06.2017
20:15:09
да, там триалками и Early Access можно вечно-бесплатно пользоваться

Google

Darafei
25.06.2017
20:15:53
к окончанию периода выходит новая, только обновляться успевай :)

WoodyFire
25.06.2017
20:17:06

Admin
ERROR: S client not available

Артур
25.06.2017
21:27:08
этот зверь стоит 53-х баксов?
Вообще норм. Я phpstorm приобрел за 90$ и окупил сразу же почти :)
Потому что пиратка может сбросить ключ и дельный сервис искать надо (либо старьем пользоваться) что затртит не мнее 3х часов и может происходить от 3 раз в год итого профит 9 часов экономии (если ты зарабатываешь хотя бы 10$ в час - оно себя окупит)
Ну и поощрить разработчиков за их старания и обновления тоже очень важно.

Denis
25.06.2017
22:55:28
привет! есть ли те, кто пользуется pgadmin4? я его поставил и возник ряд вопросов:
* как в нем настроить автодополнение в нижнем регистре? по умолчанию дополняет в верхний.
* как комментировать код? стандартный ctr+k вызывает поиск в гугле на вкладке хрома.
* почему ctr + u и ctr + shift + u работают как undo/redo, а не как преобразование нижний/верхний регистр?

Dmitry
25.06.2017
23:21:20


WoodyFire
26.06.2017
02:46:40
Спасибо за проделанный Вами труд. И спасибо за замечание. Сегодня обязательно исправлю. У меня поэтому поводу сомнения проскакивали ))) Но не придал почему-то значение. (((
Вчера читал официальные доки по поводу создания порта, но из-за не достаточности опыта и слабой матчасти в этом вопросе отложил на некоторое время. Тестовая виртуальная машинка для экспериментов имеется. Со временем постараюсь разобраться.
Никогда так не делайте. Теперь у вас в системе нагажено нигде не зарегистрированными файлами, которые чисто удалить или обновить никак не получится, только выковыривать руками.
Я добавил порт databases/pldebugger, используйте его
Порты обновил. Собралось на ура, без проблем. Установил. Работает. Еще раз спасибо ?

Denis
26.06.2017
06:40:21

Vadim
26.06.2017
07:08:15

Denis
26.06.2017
07:09:58

Alex
26.06.2017
07:21:30
Пользовался какое-то время pgadmin4, но потом перешел на HeidiSQL.

Anton
26.06.2017
07:33:40
Коллеги, доброго дня! кто знает, подскажите что за магия происходит :)
почему индекс не берет ?

Andrey
26.06.2017
07:35:49
Потому что в данном случае seqscan быстрее. У вас же нет ограничения выборки.

Maksim
26.06.2017
07:37:12

Google

WoodyFire
26.06.2017
07:44:36

Inal
26.06.2017
08:24:07
Всем добрый день!
Подскажите, пожалуйста, как сделать лучше.
У меня есть подзапрос, который пытается достать данные из временной таблицы, но эта временная таблица может не существовать. Как можно проверить, что она существует и если ее нет возвращать дефолтное значение?
Что-то типа такого не работает
(SELECT CASE WHEN (SELECT to_regclass('temp_organization_ratings') IS NULL)
THEN 0
ELSE (SELECT score :: FLOAT
FROM temp_organization_ratings
WHERE organization_id = view_organizations.id) :: FLOAT END)


WoodyFire
26.06.2017
08:31:17
Лично я еще не разобрался до конца и могу ошибиться в наименовании, но вроде как есть параметр FOUND которому присваивается значение true - если SELECT что то получил, в противном случае false. Еще эту возможность не обуздал, если честно. Приоритеты пока другие.
раздел 41.5.3 Официального руководства по версии 9.6
вот что там написано между строк
Можно проверить специальную переменную FOUND (см. Подраздел 41.5.5), чтобы
определить, была ли возвращена запись:
SELECT * INTO myrec FROM emp WHERE empname = myname;
IF NOT FOUND THEN
RAISE EXCEPTION 'Сотрудник % не найден', myname;
END IF;

Anatoliy
26.06.2017
08:36:12
Можно сделать WHERE EXISTS (SELECT FROM information_schema.tables WHERE blabla);
или left join и проверка на IS NULL

Inal
26.06.2017
08:54:23

WoodyFire
26.06.2017
08:54:25

Anatoliy
26.06.2017
08:58:05

raksita
26.06.2017
08:58:50

Denis
26.06.2017
09:08:06

raksita
26.06.2017
09:09:03

Inal
26.06.2017
09:13:28
Прямое выполнение кода выше дает все равно
ERROR: relation "temp_organization_ratings" does not exist