Я объединяю две таблицы: главную (ui_cdc_s5_misto_cas_zdroj_aggregace) индексированную таблицу и зависимую таблицу (ui_cdc_s5_misto_cas_zdroj_aggregace_zdrobneni) через идентификатор, зависимая таблица имеет 9 131 407 строк.ожидается, что он применяет сканирование индекса к основной таблице и получит 4042 строки, для зависимой таблицы он применяет сканирование seq, берет все 9 131 407 строк и выполняет хеш-соединение.
Объясните анализ непараллельно: https://explain.depesz.com/s/5xjm
Тогда, если я разрешу параллельную обработку, число строк для зависимой таблицы не совпадет, если я суммирую все фактические строки, которые я получу в 8 602 360Также не совпадают строки в основной таблице.
ПРИМЕЧАНИЕ: эти цифры, похоже, меняются при каждом выполнении.
-> Parallel Seq Scan on reports.ui_cdc_s5_misto_cas_zdroj_aggregace_zdrobneni az (cost=0.00..87618.15 rows=2945615 width=24) (actual time=0.035..939.911 rows=3043802 loops=3)
Output: az.id, az.zahranicni, az.pul_den, az.v_vytizeni
Buffers: shared hit=58162
Worker 0: actual time=0.027..1149.377 rows=2835236 loops=1
Buffers: shared hit=18059
Worker 1: actual time=0.050..1191.181 rows=2723322 loops=1
Buffers: shared hit=17346
Объясните, проанализируйте параллель: https://explain.depesz.com/s/1HHN
Почему число не совпадает, потому что оно действительно не читает всю таблицу (мне кажется маловероятным), или есть некоторыедругая логика в этом?
PostgreSQL 11.5 на x86_64-pc-linux-gnu, скомпилированный gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-битный