|
Left join медленный запрос
|
|||
---|---|---|---|
#18+
Bekass, тут просто есть очень большая разница выбирать все записи или первые 1000 по скорости... вы то просили все записи получить в исходном запросе и сравнивали с временем получением первых 100-1000 от mysql (о чем не написали опять же). что показывает set track_io_timing to on; explain (analyze, costs, buffers, timing) select geo.* from geo where not exists (select from geo as p where geo.id = p.parent_id) LIMIT 100; и set track_io_timing to on; explain (analyze, costs, buffers, timing) select geo.* from geo where not exists (select from geo as p where geo.id = p.parent_id) ORDER BY geo.id DESC LIMIT 100; автортот же запрос на POSTGRE https://prnt.sc/uh8w76 на меньшем количестве записей занимает 200с !!! - а вот это уже вопрос к настройкам базы... 37s я вам и на postgres смогу сделать я думаю без проблем... какая у вас версия базы? сколько shared_buffers и какой размер базы? сколько work_mem? какие диски (механика или ssd) и какие значения seq_page_cost и random_page_cost в конфиге и effective_cache_size ? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 23:29 |
|
Left join медленный запрос
|
|||
---|---|---|---|
#18+
Bekass, У вас автовакуум включен? Таблицу надо отвакуумировать после начального заполнения данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 00:13 |
|
Left join медленный запрос
|
|||
---|---|---|---|
#18+
Bekass, невероятная разница в скорости для несложной задачи, под которую наверное все оптимизируют. Трудно уверенно сказать, дело в самом софте, или его настройках. Разработчики postgre наверняка были бы заинтересованы в сценарии который в тысячу раз проигрывает сопернику, если вы сможете предоставить компактное репро. А как себя ведут похожие запросы, которые оперируют над теми же данными? Тоже есть разница, или LEFT JOIN исключение? Например, попробуйте такие два запроса. Я использовал счетчик, чтобы исключить влияние полей на скорость. Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 06:44 |
|
Left join медленный запрос
|
|||
---|---|---|---|
#18+
Bekass, ну так если вы на мускуле делвете лимит 1000, то и на пж сделайте -- Код: sql 1.
и узбагойдезь ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 09:05 |
|
Left join медленный запрос
|
|||
---|---|---|---|
#18+
Maxim Boguk set track_io_timing to on; explain (analyze, costs, buffers, timing) select geo.* from geo where not exists (select from geo as p where geo.id = p.parent_id) LIMIT 100; -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Maxim Boguk set track_io_timing to on; explain (analyze, costs, buffers, timing) select geo.* from geo where not exists (select from geo as p where geo.id = p.parent_id) ORDER BY geo.id DESC LIMIT 100; -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
[quot Maxim Boguk#22196970] версия базы PostgreSQL 12.4, compiled by Visual C++ build 1914, 64-bit shared_buffers = 1Gb work_mem =4MB seq_page_cost = 1 random_page_cost =4 effective_cache_size = 4GB диски ssd обе БД в одной системе на одном диске ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 11:05 |
|
Left join медленный запрос
|
|||
---|---|---|---|
#18+
Bekass, Ну вот вы и получили нужные вам миллисекунды... как я уже говорил полный результат за быстро вы ни на какой базе не получите... и просил время count(*) на mysql померять чтобы GUI там не развлекалось в получением первых строк вместо полного результата. Для ssd я бы поставил shared_buffers = 25% наличной памяти work_mem =16MB seq_page_cost = 0.1 random_page_cost =0.11 effective_cache_size = 90%-100% наличной памяти... но впрочем получение первой тысячи у вас и так быстро отрабатывает. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:02 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=1994471]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 147ms |
0 / 0 |