|
|
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! Вопрос такой, есть три таблицы A (~319млн), B (~120млн) Пишу запрос обычного JOIn (индексы есть) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Ну так вот... естественно он будет очень долгим, в моем случае - секунд 8-9... и это очень долго. Какие могут быть решения по ускорению? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2015, 19:54 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
alexzf, `EXPLAIN (analyze, buffers)` предоставьте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2015, 20:20 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
предлагаю помедитировать над вопросом: как выглядит план выполнения left join 3-х таблиц: A (~319млн) и B (~120млн)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2015, 21:41 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
Alexiusпредлагаю помедитировать над вопросом: как выглядит план выполнения left join 3-х таблиц: A (~319млн) и B (~120млн)? Да почти классический даосский "хлопок одной ладонью". Автору темы рекомендуется внимательно читать что он пишет и думать при этом. И не забывать если задают вопросы о производительности всегда прикладывать результат explain analyze проблемного запроса. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 05:25 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
Maxim BogukДа почти классический даосский "хлопок одной ладонью". да, именно к этой истории отсылка и была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 08:15 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
Уважаемые, прошу прощения... вот эксплейн Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 10:34 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
alexzf, Ну и сам запрос Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 10:34 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
alexzf, Просьба была предоставить `EXPLAIN (analyze, buffers)`, а не просто `EXPLAIN`. Проанализируйте таблицы (`VACUUM ANALYZE`) и приведите новый выхлоп `EXPLAIN (analyze, buffers)`. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 13:07 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
alexzfУважаемые, прошу прощения... вот эксплейн Код: plsql 1. 2. 3. 4. 5. 6. 7. И опять вы не внимательно читаете. Просили explain analyze это раз. Два в начальном посте у вас order by был которого в этом плане нет. Три - получить 10000 строк от базы очень часто в 100 раз медленнее чем получить 100 строк и это надо учитывать. PS: вероятнее всего у вас все время на диск уходит... так что больше памяти/больше shared buffers и/или ssd диски. Ну и на размер базы и таблиц смотреть надо конечно. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 14:03 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
Ок, сделал все что сказали... По поводу ордера это я просто запрос на память написал. в запросе: Код: plsql 1. 2. 3. 4. 5. 6. 7. для таблицы snp_names vacuum analyze -> авторQuery returned successfully with no result in 175327 ms. В данной таблице 119.258.056 строк для таблицы snp_gene vacuum analyze -> авторQuery returned successfully with no result in 689503 ms. В данной таблице 309.583.119 строк А вот анализ запроса: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Делетов и апдейтов не было по этим таблицам. В принципе они всегда будут только на select. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 14:18 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
И еще совет... ну это конечно на всякий.. денормализация? значительно облегчит выборку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 14:24 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
Да, диски SSD, но вот shared_buffers = 24MB из 32G. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 14:35 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
alexzfДа, диски SSD, но вот shared_buffers = 24MB из 32G. Поставьте 8Gb shared buffers это раз. Два а вас что не устраивает 150ms на почти 10000 строк???? Это 0.015ms на строку, вполне приличное время помоему. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 14:42 |
|
||
|
LEFT JOIN 3-х таблиц
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Всем спасиб! Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Вот такие вот результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2015, 17:54 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39000897&tid=1997900]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 525ms |

| 0 / 0 |
