172 похожих чатов

Друзья есть вотткакая таблица с данными create table

ping
(
id serial primary key,
created timestamp not null,
id_1 varchar(255),
user_id varchar(255),
name varchar(255) not null,
platform varchar(255),
version varchar(255),
workgroup varchar(255),
description text not null,
s3_domain varchar(255)[] not null,
s3_urls varchar(255)[] not null,
installed_frends text not null
);

и есть проблема поле s3_domain installed_frends представляют из себя строки но по факту там вписанны массивы типо installed_frends = ['Killmax','dima_tossster','vasya23big']

им щас у меня очень страдает выборка по этим строкам при агрегации.

Как мне правилььнее поступить ?
вынести эту таблицу вобще в другую бд какуюнибуд ?
перевести строки в массивы (как вобще у постгреса с выборкой по массивам)
Вынеси все что в массивых по таблицам. ( тут большой вопрос потомучто ммассивы эти имют по 100 индексов, и джойнитьь по 100 раз такое себе)
Или есть другое более правильное решение

сразу оговорюс бд юзается для статистики . Предыдущий разраб так все накатал , вот разбираюсь

10 ответов

8 просмотров

>как вобще у постгреса с выборкой по массивам Гораздо лучшэ, чем с выборкой по элементам строк, которые на самом деле не строки, а массивы. >тут большой вопрос Вообще не понял вопроса.

Iz- Автор вопроса
Ilya Anfimov
>как вобще у постгреса с выборкой по массивам Гор...

ну таблица на 15 млн строк. Самый простой способ помимо конвертации в массивы это вынести дыннaые из installed_frends в отдельную таблицу а потом соеденинть как многие ко многим и через join подтягивать данные. Но я никогда не подтягивал столько данных через join. Вот и справшиваю что будет лучьше. Сделать из этого массив, Сделать из этого несколько таблиц и подтягивать через join, или вытащить в другую бд.

Iz
ну таблица на 15 млн строк. Самый простой способ ...

Второй вариант -- ну, в принцыпе так и надо. Лет хотя бы 10 назад я сказал бы, что только так и надо... Но на практике во-первых при маленьких массивах -- массивы могут быть быстрее, во-вторых в постгрессе нет индэксов на join и несколько таблиц, а на массивы -- есть. Потому всё сложно и требует анализа запросов, которые будут идти к базе. Но в большынстве случаев -- вторая таблица один-ко-многим правильнее и быстрее.

Iz- Автор вопроса
Iz- Автор вопроса
Ilya Anfimov
Второй вариант -- ну, в принцыпе так и надо. Лет ...

я тут прикинул в таблице 15 милионов строк, в ней есть массивы которые хранятся строкой, массивы эти длинной могут быть 1000 пунктов если я это все переведу в отдельные таблицы то таблица (которая будет многое ко многим), она же будет просто овер гигантская

Iz
я тут прикинул в таблице 15 милионов строк, в ней...

Гигантская -- это когда не влезает на бытовой SSD.

Iz
я тут прикинул в таблице 15 милионов строк, в ней...

А разных вариантов классификатора у вас сколько? И какие у вас агрегации и пр. запросы про s3_domain? А то может быть s3_domain можно заменить на bitset А может быть оставить как есть, просто добавить gin индекс

Iz- Автор вопроса
alex che
А разных вариантов классификатора у вас сколько? И...

gin индексы на всех строках стоят, ну например есть строка installed_frends = ['Killmax','dima_tossster','vasya23big'] и надо найти всех у кого есть vasya23big и еще с десяток других васянов

Iz
gin индексы на всех строках стоят, ну например ...

Поиск Васянов должен работать быстро при наличии gin индекса. Что медленно работает?

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

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

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Карта сайта