Size: a a a

pgsql – PostgreSQL

2020 June 25

m

maxp.dev in pgsql – PostgreSQL
Романов Александр
вероятно тебе нужен Gin Index
а там же как-то надо указать про опсы? или нет?
источник

m

maxp.dev in pgsql – PostgreSQL
такое?
gin__int_ops
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
ani
#ani
наткнулся случайно на .. дочерние таблицы, наcледование таблиц, вот что это ?  пример из доки
CREATE TABLE capitals (
   state           char(2)
) INHERITS (cities);
если потом удалю cities, останется ли все что было создано в capitals вместе с cities
да
и ваще что это, можно пример в практике для чего может понадобиться. ага.."Родительскую таблицу нельзя удалить", пока существуют унаследованные от неё.
а для чего это все, может мне надо а ?
я редко сюда захожу можно  с хештегом #ani #ani ответить.
почему наткнулся - при замене Default для столбца меня попроcили указать ONLY.. и вот тут меня задело.
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
maxp.dev
Уважаемые, подскажите, как правильно индексы описать для такой таблички
create table t( id int, arr int[])
при условии что хочется уникальности пар (id,arr), и быстрый поиск по (id, any element of arr)
?
Если id уникальный и в запросе всегда есть id, нужен ли ещё индекс по int[]?
источник

m

maxp.dev in pgsql – PostgreSQL
нет, ид не уникальный - это просто для примера значение
источник

m

maxp.dev in pgsql – PostgreSQL
допустим это ид некоей подгруппы
источник

m

maxp.dev in pgsql – PostgreSQL
запрос такого плана - "найти элементы подгруппы, у которых есть признаки (из массива)"
источник

И

Игорь in pgsql – PostgreSQL
Уважаемые помогите не опытному, есть в таблице точки (X,Y) разных функций, и есть на задача посчитать сколько в определенной табличной сетке их количество, сетка может быть хоть 1000*1000, а в каждом квадратике до 1000000 элементов. Сейчас координаты сетки считаю на проге на бд отдаю запрос с count по условию квадратов из сетки и этопипец как долго все работает, как можно упростить решение?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
maxp.dev
Уважаемые, подскажите, как правильно индексы описать для такой таблички
create table t( id int, arr int[])
при условии что хочется уникальности пар (id,arr), и быстрый поиск по (id, any element of arr)
?
> при условии что хочется уникальности пар (id,arr)

Тут нужен b-tree, можно просто PRIMARY KEY (id, arr).

>  и быстрый поиск по (id, any element of arr)

А для этого — либо ничего (если по каждому id немного записей), либо попробовать GIN по этим полям (с btree_gin).
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Данияр
я его поставил, но все равно 2 минуты отрабатывает
Покажите запрос, план (EXPLAIN (ANALYZE, BUFFERS)) и \d таблицы.
источник

m

maxp.dev in pgsql – PostgreSQL
Yaroslav Schekin
> при условии что хочется уникальности пар (id,arr)

Тут нужен b-tree, можно просто PRIMARY KEY (id, arr).

>  и быстрый поиск по (id, any element of arr)

А для этого — либо ничего (если по каждому id немного записей), либо попробовать GIN по этим полям (с btree_gin).
btree_gin - то что такое?
источник

Д

Данияр in pgsql – PostgreSQL
Yaroslav Schekin
Покажите запрос, план (EXPLAIN (ANALYZE, BUFFERS)) и \d таблицы.
Секунду, сейчас запущу
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
maxp.dev
btree_gin - то что такое?
https://www.postgresql.org/docs/current/btree-gin.html
Без него Вы такой индекс не создадите.
источник

DP

Darafei Praliaskousk... in pgsql – PostgreSQL
Игорь
Уважаемые помогите не опытному, есть в таблице точки (X,Y) разных функций, и есть на задача посчитать сколько в определенной табличной сетке их количество, сетка может быть хоть 1000*1000, а в каждом квадратике до 1000000 элементов. Сейчас координаты сетки считаю на проге на бд отдаю запрос с count по условию квадратов из сетки и этопипец как долго все работает, как можно упростить решение?
возможно, вам пригодится PostGIS и тип geometry
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Игорь
Уважаемые помогите не опытному, есть в таблице точки (X,Y) разных функций, и есть на задача посчитать сколько в определенной табличной сетке их количество, сетка может быть хоть 1000*1000, а в каждом квадратике до 1000000 элементов. Сейчас координаты сетки считаю на проге на бд отдаю запрос с count по условию квадратов из сетки и этопипец как долго все работает, как можно упростить решение?
А покажите запрос — не совсем понятно, что Вы делаете.
источник

Д

Данияр in pgsql – PostgreSQL
Yaroslav Schekin
Покажите запрос, план (EXPLAIN (ANALYZE, BUFFERS)) и \d таблицы.
Gather  (cost=1000.00..92292.50 rows=746 width=915) (actual time=9.126..56881.982 rows=72880 loops=1)
 Workers Planned: 5
 Workers Launched: 5
 Buffers: shared hit=592964
 ->  Parallel Seq Scan on urls_with_search_words  (cost=0.00..91217.90 rows=149 width=915) (actual time=38.685..56774.885 rows=12147 loops=6)
       Filter: ((search_words IS NOT NULL) AND (search_words <> ''::text) AND ('19 covid'::text <% search_words))
       Rows Removed by Filter: 112105
       Buffers: shared hit=592964
Planning Time: 0.191 ms
Execution Time: 56886.559 ms
источник

Д

Данияр in pgsql – PostgreSQL
Yaroslav Schekin
Покажите запрос, план (EXPLAIN (ANALYZE, BUFFERS)) и \d таблицы.
Запрос

SELECT id, url, search_words,word_similarity('19 covid',search_words)
 FROM dmp_test.urls_with_search_words
 WHERE search_words != ''
   AND search_words IS NOT NULL
AND '19 covid' <% search_words
;
источник

И

Игорь in pgsql – PostgreSQL
Yaroslav Schekin
А покажите запрос — не совсем понятно, что Вы делаете.
select count(id)
from public.result_functions
where (i <= x and x < (i + shagg)) and (j <= y and y < (j + shagv)) где shagg шаг сетки по горизонтали shagv шаг ветки по вертикали i,j точки из сетки
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Игорь
select count(id)
from public.result_functions
where (i <= x and x < (i + shagg)) and (j <= y and y < (j + shagv)) где shagg шаг сетки по горизонтали shagv шаг ветки по вертикали i,j точки из сетки
А одним запросом для всей сетки Вы это не пробовали написать?
источник

И

Игорь in pgsql – PostgreSQL
так мне надо знать сколько в каждом квадрате количество. единственное понимаю написать функцию и вызывать ее которая бы считала на бд эту сетку, но пока не понимаю сильно ли по времени будет разница
источник