|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Добрый день. Имеется огромная таблица. Требуется выбрать данные из этой таблицы, связав ее с более мелкой. При JOIN в плане вложенные циклы. Возможно ли как-то от них избавиться? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 14:38 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Ну и как можно ускорить данный запрос? hash join в память не поместится наверное.... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 14:39 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Ишу информацию, пока ничего не нашел, как ускорить ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 14:50 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Уткъ, начните с вопроса зачем вам порядка полутриллона записей в результате одного запроса. Что с ними делать дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 15:38 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Теоретически (сам работаю с Oracle), добавив колонки в индекс, можно избежать обращения ко второй таблице. Т.е index scan заменить на https://www.postgresql.org/docs/10/indexes-index-only-scans.html Как это должно выглядить в плане PostgreSQL на память не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 15:51 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
УткъНу и как можно ускорить данный запрос? hash join в память не поместится наверное.... 1)показать explain (analyze, costs, buffers, timing) Этого запроса чтобы увидеть реальные цифры 2)попробовать сделать set work_mem to '8GB'; explain Этого же запроса 3) mt(guid) индекс есть? Особо не увидев итоги этих 3 попрыток - ничего не посоветуешь. PS: попробовать на 11 версии сделать (хотя под такой план и 9.6 хватит) поставив достаточное количество параллельных обработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 15:58 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
MelkijУткъ, начните с вопроса зачем вам порядка полутриллона записей в результате одного запроса. Что с ними делать дальше? результат запроса вставляется в новую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 16:33 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Maxim BogukУткъНу и как можно ускорить данный запрос? hash join в память не поместится наверное.... 1)показать explain (analyze, costs, buffers, timing) Этого запроса чтобы увидеть реальные цифры 2)попробовать сделать set work_mem to '8GB'; explain Этого же запроса 3) mt(guid) индекс есть? Особо не увидев итоги этих 3 попрыток - ничего не посоветуешь. PS: попробовать на 11 версии сделать (хотя под такой план и 9.6 хватит) поставив достаточное количество параллельных обработчиков. explain analyze показать невозможно, т.к. запрос выполняется бесконечно долгое клоичество времени. set work_mem to '8GB' уже сдалал, explain такой же. индекс есть. Версия 9.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 16:34 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevТеоретически (сам работаю с Oracle), добавив колонки в индекс, можно избежать обращения ко второй таблице. Т.е index scan заменить на https://www.postgresql.org/docs/10/indexes-index-only-scans.html Как это должно выглядить в плане PostgreSQL на память не помню. это не вариант, там колонок больше выводится чем я привел, для примера запрос укоротил, убрав большую часть колонок. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 16:36 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Как временное решение добавил лимит и проверку на существующие записи: INSERT INTO all_table select mt.guid, bt.data from big_table bt join my_table mt on mt.guid = bt.id WHERE guid NOT IN (select guid FROM all_table) LIMIT 10000 При определенном количестве LIMIT вложеные циклы превращаются в хэш джоин. Но это решение как-то кустарно выглядит Есть ли еще какие-нить варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 16:38 |
|
Ускорить запрос по бооооольшой таблице.
|
|||
---|---|---|---|
#18+
Уткъ, покажите explain analyze варианта с hash join и Код: sql 1. 2.
если прячете зачем-то названия таблиц и полей, делайте это хотя бы консистентно. а то запрос один, план совсем другой получается, непонятно где у кого там поле pk. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 17:57 |
|
|
start [/forum/topic.php?fid=53&fpage=43&tid=1995306]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 265ms |
total: | 405ms |
0 / 0 |