|
Оптимизация запроса PostgreSQL 9.5 | ☑ | ||
---|---|---|---|---|
0
GANR
02.12.19
✎
11:08
|
Не подскажете, как ускорить запрос в PostgreSQL 9.6, НЕ МЕНЯЯ его? 12 млн. записей, таблица весит около 40 Гб, использует JSONB.
SELECT * FROM svjul WHERE "data" ->> 'INN' = '7727383912' ORDER BY svjul.id ASC LIMIT 100 OFFSET 0 Сделал 2 индекса - все равное работает медленно: CREATE INDEX idx_svjul_inn ON svjul ((data ->> 'INN') CREATE INDEX idx_svjul_id ON public.svjul ((id)) |
|||
1
palsergeich
02.12.19
✎
11:22
|
Тебе твои индексы при Select * никак не помогут, ибо за всеми полями все равно лезть в кластерный индекс.
Или ограничивай число полей и делай покрывающий или страдай дальше. |
|||
2
GANR
02.12.19
✎
11:24
|
(1) поясните, пожалуйста, как понять "покрывающий"?
|
|||
3
palsergeich
02.12.19
✎
11:25
|
То что ты сделал 2 разных индекса на поле отбора и поле группировки это очень трогательно, но это немножко не так работает.
|
|||
4
palsergeich
02.12.19
✎
11:26
|
||||
5
palsergeich
02.12.19
✎
11:26
|
||||
6
palsergeich
02.12.19
✎
11:29
|
||||
7
pechkin
02.12.19
✎
11:31
|
(1) ты уверен что тормозит именно вытягивание строки таблицы?
|
|||
8
palsergeich
02.12.19
✎
11:32
|
(7) Йа на 99% уверен, что там все крутится в кластерном индексе и созданные индексы не изменили ничего.
|
|||
9
pechkin
02.12.19
✎
11:33
|
сколько в среднем записей на 1 ИНН?
|
|||
10
GANR
02.12.19
✎
11:38
|
(9) 1
|
|||
11
H A D G E H O G s
02.12.19
✎
11:50
|
Начнем с малого - кластерный индекс есть?
|
|||
12
Бычий хрен
02.12.19
✎
11:55
|
(11) в пиздгресе нет кластерных индексов вроде бы
|
|||
13
ansh15
02.12.19
✎
15:23
|
(0) Можно посмотреть в сторону параллельного выполнения запросов https://habr.com/ru/company/postgrespro/blog/352144/ , https://habr.com/ru/company/southbridge/blog/446706/
Понятно, что в этом случае будет нужно некоторое количество высокопроизводительных незанятых ядер и, желательно, достаточный размер оперативной памяти, чтобы и таблица в кэш СУБД помещалась и для всего остального хватало. Лучше использовать PostgreSQL 11-й или 12-й редакций, там параллелизм(как пишут) значительно улучшен. В 9.6 он был в зачаточном состоянии. |
|||
14
ansh15
02.12.19
✎
16:17
|
В 12-м вообще много чего улучшили https://habr.com/ru/company/southbridge/blog/466727/
Индексацию в том числе. |
|||
15
GANR
02.12.19
✎
19:17
|
Всем спасибо. Переделал индекс вот так CREATE INDEX idx_svjul_inn_id ON public.svjul ((data ->> 'INN'), id); - запрос из (0) заработал быстро.
|
|||
16
palsergeich
02.12.19
✎
19:23
|
(15) Молодец, сделал покрывающий индекс и все вышло)
|
|||
17
GANR
03.12.19
✎
10:30
|
(16) А не подскажете чего бы почитать по PostgreSQL? Что-то куча книжек, а хороших мало - пускают в тираж всё что ни лень.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |