@pgsql

Страница 934 из 1062
The
11.08.2018
11:01:01
и так-же PK будет в сависимости от того, может ли там быть M:M или нет

поэтому NOT NULL там конечно по дефолту будет, спасибо

Yaroslav
11.08.2018
11:17:20
Вы вот нагенерировали данных... но с ними проблема в том, что вряд ли в жизни распределение свойств будет хоть сколько-нибудь похоже на равномерное (как у Вас получилось). :( И в Вашем случае это важно, к сожалению.

Т.е. смотрите, по сочетанию всех выбранных свойств у Вас получается 130779 записей (из 3.2 M, верно)? И PostgreSQL это прямо почти точно "угадывает", что и намекает мне, что в жизни всё будет не так гладко.

Google
The
11.08.2018
12:02:40
Т.е. смотрите, по сочетанию всех выбранных свойств у Вас получается 130779 записей (из 3.2 M, верно)? И PostgreSQL это прямо почти точно "угадывает", что и намекает мне, что в жизни всё будет не так гладко.
а я думаю в жизни будет более гладко, так как сейчас прям у каждого товара есть и бренд, и ядра, и память, на практике же в этих таблицах будет не 3 млн товаров, а 50 тыс. скажем

и будут таблицы с другими опциями, например size {s, m, l, xl}

и т.д.

Yaroslav
11.08.2018
12:06:58
а я думаю в жизни будет более гладко, так как сейчас прям у каждого товара есть и бренд, и ядра, и память, на практике же в этих таблицах будет не 3 млн товаров, а 50 тыс. скажем
Так от этого зависят лучшие планы выполнения запросов. Одно дело искать 30 лучших цен из 150K подходящих под фильтры товаров, а из тысячи — совсем другое. ;)

The
11.08.2018
12:08:18
ну т.е. в реальных условиях все же проще базе будет, я правильно понял?

Yaroslav
11.08.2018
12:10:30
ну т.е. в реальных условиях все же проще базе будет, я правильно понял?
Планировать сложнее, выполнять проще. ;) Общий эффект должен быть положительным, да.

The
11.08.2018
12:12:11
я буду ещё допиливать дизайн базы, и потом попробую налить настоящих данных, но их будет совсем мало. товаров тысяч 20-30, артикулов может 50-70 тыс.

ещё прототип сайта надо набросать, оттуда станут ясны выборки какие будут, и какие поля у таблиц

Yaroslav
11.08.2018
12:14:08
В таком случае, я бы с запроса с LATERAL начал смотреть, всё же. Т.е. фильтруем товары -> притягиваем цены -> сортируем и ограничиваем.

И даже чтобы на этом прототипе посмотреть, Вам нужно wholesale_price добавить...

ну т.е. в реальных условиях все же проще базе будет, я правильно понял?
-- Что-то вроде (после создания полей и ранее указанных индексов): SELECT ... FROM shop_product_sku AS sps JOIN shop_product AS sp ON sps.product_id = sp.id CROSS JOIN LATERAL ( SELECT spso.seller_id, spso.wholesale_price, ( SELECT MAX(retail_price) FROM shop_product_sku_offer AS spso_retail WHERE spso_retail.sku_id = spso.sku_id -- Index (sku_id, retal_price) ) AS max_retail FROM shop_product_sku_offer AS spso WHERE spso.sku_id = sps.id ORDER BY spso.wholesale_price, spso.seller_id LIMIT 1 -- Index (sku_id, wholesale_price, seller_id) ) AS best_seller WHERE sps.is_available AND EXISTS ( SELECT 1 FROM shop_feature_brand_sku sfbs WHERE sfbs.sku_id = sps.id AND sfbs.feature_value_code IN ('xiaomi', 'samsung', 'lg', 'huawei') ) AND EXISTS ( SELECT 1 FROM shop_feature_cores_sku AS sfcs WHERE sfcs.sku_id = sps.id AND sfcs.feature_value_code = 2 ) AND EXISTS ( SELECT 1 FROM shop_feature_ram_sku AS sfrs WHERE sfrs.sku_id = sps.id AND sfrs.feature_value_code IN (2048, 4096) ) ORDER BY spso.wholesale_price DESC, sps.id LIMIT 30;

Google
The
11.08.2018
13:04:02
жесть)

Yaroslav
11.08.2018
13:08:52
жесть)
Да ладно. ;) Это ерунда, на самом деле.

Труба
11.08.2018
16:16:56
Всем привет, помогите, пожалуйста написать селект с джоином. Возможно я вообще не в том направлении думаю. Буду благодарен за любую помощь. Table: posts(category/post_type) Values: 'cats','image' Table: post_fields(name/value/post_id) Values: 'image_source','http://testsite.com' Result Columns(category/post_type/image_source) Values: 'cats'/'image'/'http://testsite.com' Я пробовал вот так, но не особо получилось =) SELECT posts.*, post_fields.name AS post_fields.name FROM posts JOIN post_fields ON post_fields.post_id = posts.id;

Труба
11.08.2018
16:25:43
Почему у Вас поля через "/"? ;) А чего вы хотели добиться и что не так?
Я просто для примера выбрал такой разделитель. У меня есть несколько типов постов, и у каждого свои дополнительные поля, который храняться в таблице post_fields. Когда я выполняю селект, хочу соединить эти поля вместе с постом чтобы во время селекта получилось вот так post.category, post.post_type, post_field1_name, post_field2_name 'cats', 'image', post_field1_value, post_field2_value

Труба
11.08.2018
16:28:11
Я получаю 2 строки вместо одной =)

Yaroslav
11.08.2018
16:31:53
А Вы все возможные "поля" (значения post_fields.name) знаете? Если да, то либо пишите кусок запроса для каждого (или генерируйте его динамически), либо собирайте их в какой-нибудь JSON/XML/hstore и т.п. А почему у Вас именно такая модель (это прямо очень похоже на EAV)?

Труба
11.08.2018
16:32:20
Я стыбзил это из вордпрес =)

А как еще можно сделать посты с разными типами?

вообще можно в одну строку все записать. Только иногда поля будут пустые

Yaroslav
11.08.2018
16:33:35
Хмм... а где тут типы? Тут просто какие-то значения, кажется.

Труба
11.08.2018
16:36:33
Посты могут быть картинками, текстом и ссылками(которые потом можно будет вставлять на сайт, например youtube/embed/id) . Если мы вставляем картинку то будет post_type='image', если ссылку то post_type='link'. Я приводил пример с постом с типом 'image'

Спасибо за помощь, пойду пилить дальше.

The
11.08.2018
16:38:10
помоему у wp не очень оптимальный дизайн бд

там так сделано в угоду гибкости, чтобы плагинчиками можно было расширять

Труба
11.08.2018
16:38:58
помоему у wp не очень оптимальный дизайн бд
согласен, я просто хотел хоть какой нибудь пример увидеть. Можно было вообще с mongodb бабахнуть =)

Yaroslav
11.08.2018
16:39:07
согласен, я просто хотел хоть какой нибудь пример увидеть. Можно было вообще с mongodb бабахнуть =)
У нас тут реляционка, как бы. ;) Т.е. не будет реляционной модели — будете страдать (больше или меньше). Вы уже начали, кстати. ;)

Google
Труба
11.08.2018
16:40:31
Yaroslav
11.08.2018
16:42:11
Можно разбить, но потом нужно будет искать в 4 таблицах. Я не знаю так можно вообще? =)
Эээ... что искать? Вообще, кстати, непонятно, что у Вас за задача / структура...

Труба
11.08.2018
16:45:04
Эээ... что искать? Вообще, кстати, непонятно, что у Вас за задача / структура...
Вы предлагаете записать все посты в разные таблицы? post_image, post_link и post_text? Я потом смогу получить список всех постов? Мне нужно создать сайт, куда пользователи смогут загружать разный контент, затем будет формироваться фид из этих постов.

Yaroslav
11.08.2018
16:47:48
Вы предлагаете записать все посты в разные таблицы? post_image, post_link и post_text? Я потом смогу получить список всех постов? Мне нужно создать сайт, куда пользователи смогут загружать разный контент, затем будет формироваться фид из этих постов.
Я конкретного ничего не предлагаю, т.к. мне, например, непонятно, ни что у Вас есть, ни что Вам нужно. ;) Если у Вас есть только 3 возможных "поля", можно сделать (самое простое): posts(post_id, post_type, image NULL, link NULL, text NULL) + соответствующие constraints.

The
11.08.2018
16:48:37
не, он хочет чтобы контент был динамическим, т.е. пост - это и видео, и ссылка, и прочее.

можно что-то подобное у reddit глянуть, у них там есть post post_data где у post есть id, url, excerpt а у post_data - k:v все метаинформация

The
11.08.2018
16:50:26
по хорошему нужно определить точку слияния между всеми этими сущностями, т.е. у каждой из них есть заголовок, есть картинка (например) и маленькое описание. а там уже разделять по таблицам

ну во всяком случае в wp так сделано)

Труба
11.08.2018
16:52:06
Я плохо объясняю. =) Вадим прав, это то что мне нужно.

Сейчас посмотрю как там у реддита

The
11.08.2018
16:55:04
https://www.slideshare.net/carsonified/steve-huffman-lessons-learned-while-at-redditcom 8 слайд

но сразу скажу, презентация древняя, хз как у них сейчас сделано)

Труба
11.08.2018
16:58:21
Да, это как у вордпрес =)

Спасибо еще раз, я понял как сделать. =)

The
11.08.2018
17:00:21
везет вам

Terminator
11.08.2018
18:59:59
@Heitorfaria будет жить. Поприветствуем!

Heitor
11.08.2018
19:00:09
Hello guys, good afternoon. I'm a newbie. How do I subtract these two values in postgresql? 2017-05-25 11:56:46 | 2017-05-25 11:56:46

I'm trying SELECT DATEDIFF(second, starttime, endtime) from job;

Google
Александр
11.08.2018
19:07:18
Age(endtime, starttime)

Mike Chuguniy
11.08.2018
19:08:24
pg_user=> select '2017-05-25 11:56:46'::timestamp - '2017-05-25 11:56:46'::timestamp as timediff; timediff ---------- 00:00:00 (1 строка) pg_user=>

Admin
ERROR: S client not available

Heitor
11.08.2018
19:14:21
Age(endtime, starttime)
SELECT age(endtime, starttime) from job; ERROR: syntax error at or near "Age" LINE 1: Age(endtime, starttime) ^

Thank you very mutch, btw

bacula=# select endtime::timestamp - starttime::timestamp as timediff from job; timediff ---------- 00:00:54 00:00:00

bacula=# select jobbytes::float/(endtime::timestamp - starttime::timestamp) from job; ERROR: operator does not exist: double precision / interval

I actually need the average of jobbytes::int / (endtime::timestamp - starttime::timestamp)

Yaroslav
11.08.2018
20:03:47
I actually need the average of jobbytes::int / (endtime::timestamp - starttime::timestamp)
Did you look in the docs? https://www.postgresql.org/docs/current/static/functions-datetime.html Also, you might have better luck in #postgresql (IRC).

Terminator
11.08.2018
20:42:40
@Dinogavrik будет жить. Поприветствуем!

@museiko будет жить. Поприветствуем!

Nikolay Trubeko будет жить. Поприветствуем!

Slach
12.08.2018
09:56:51
Народ А зачем pg_restore выводит sql запросы из файла в ,stdout?

Artem
12.08.2018
10:04:52
а книги по postgres-pl/sql тут можно постить?

Dima
12.08.2018
10:20:10
Допустим я подыму на сервере бд постгрес. Я смогу к ней подключится с своего пк удаленно? (просто недоконца уверкн в этом)

Volodymyr Kostyrko
12.08.2018
10:20:44
Да.

Yukari
12.08.2018
10:44:53
Допустим я подыму на сервере бд постгрес. Я смогу к ней подключится с своего пк удаленно? (просто недоконца уверкн в этом)
Если будут соблюдены два условия: Есть маршрут для подключения, открыты порты фаервола. Ну и конечно сам постгрес должен знать о возможности подключения.

Yaroslav
12.08.2018
11:30:55
Народ А зачем pg_restore выводит sql запросы из файла в ,stdout?
Потому что вы их никуда не перенаправили, скорее всего (не задали базу данных - приёмник).

Eagle Owl
12.08.2018
11:42:47
Допустим я подыму на сервере бд постгрес. Я смогу к ней подключится с своего пк удаленно? (просто недоконца уверкн в этом)
В двух файлах надо настройки поменять. postgresql.conf разрешить ip адрес. И в pg_hba, кажется права надо прописать.

Google
elfiki
12.08.2018
12:10:19
Допустим я подыму на сервере бд постгрес. Я смогу к ней подключится с своего пк удаленно? (просто недоконца уверкн в этом)
ну наверное самый правильный путь - это прокинуть shh туннель и через него коннектиться

Slach
12.08.2018
12:26:52
Наталья Мякушина: ПОДСКАЗКА: No operator matches the given name and argument type(s). You might need to add explicit type casts. ОПЕРАТОР: CREATE INDEX questions_main_section_dtime_key ON questions USING btree (dtime) WHERE (ARRAY[7629426] OPERATOR(tables_to_drop.<@) sections); Народ а что это за оператор? Как его создать?

Slach
12.08.2018
12:41:51
Оно на англиском кроме пары слов

Там даже sql запрос есть который фейлится

Суть того чтотнапиисано типа нет оператора котрый матчится на array и поле sections которое interger[] масиивом обьявлено

Типа скастуйте типы

Вот только я в упор не понимаю какие типы надо кастовать

Anton [Mgn, az09@osm]
12.08.2018
12:45:52
Вот только я в упор не понимаю какие типы надо кастовать
И никто не поймет пока запрос и типы данных не покажешь )

А оператор я думаю в каком-то из этих смыслов https://en.wikipedia.org/wiki/Operator_(computer_programming)

Mike Chuguniy
12.08.2018
12:48:57
Оператор доступа к индексу? А это не вот отсюда: https://postgrespro.ru/docs/postgresql/10/indexam ?

Ну или таки покажите запрос и \d <tablename>

Страница 934 из 1062