Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qAzSh-0007Us-Pj for pgsql-performance@arkaria.postgresql.org; Sun, 18 Jun 2023 20:57:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qAzSg-0000f5-Cl for pgsql-performance@arkaria.postgresql.org; Sun, 18 Jun 2023 20:57:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qAzSf-0000ds-BH for pgsql-performance@lists.postgresql.org; Sun, 18 Jun 2023 20:57:26 +0000 Received: from mx1.riseup.net ([198.252.153.129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qAzSW-002w3s-Pr for pgsql-performance@lists.postgresql.org; Sun, 18 Jun 2023 20:57:23 +0000 Received: from fews02-sea.riseup.net (fews02-sea-pn.riseup.net [10.0.1.112]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx1.riseup.net (Postfix) with ESMTPS id 4QklZg1zrWzDqpb for ; Sun, 18 Jun 2023 20:57:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1687121835; bh=dKXhALpVffqNv+i/jo7dvBlewf0Rwn35QgrTwi7BGws=; h=Subject:From:To:Date:In-Reply-To:References:From; b=ExiAlB4CvI5nY3KcNiLqe3N/dH/T+RRl2q4dwYUG+hA5n6RPArWPTgDQ1LNYWZ91F YA9n3S10Ef8C/Srm9MH5OY6tZhSI1Pfq/g3mnc18WbWDY8fyxcWn/iB/38j5Qxcyao TvgSL6h8FY9CHcVI7jYcsoBbvqMJIrvuxPdOCRX8= X-Riseup-User-ID: 4E1BFC32CF47CC472CB71ACC912A3E2FAEFBB6FB8026AC9EFC963E47B085E961 Received: from [127.0.0.1] (localhost [127.0.0.1]) by fews02-sea.riseup.net (Postfix) with ESMTPSA id 4QklZf3WMDzFpck for ; Sun, 18 Jun 2023 20:57:14 +0000 (UTC) Message-ID: <0e68d4e3f09ea9cf7f55f594d8f2bf47cead3cb2.camel@riseup.net> Subject: Re: Merge David and Goliath tables efficiently From: nicolas paris To: pgsql-performance@lists.postgresql.org Date: Sun, 18 Jun 2023 22:57:11 +0200 In-Reply-To: <07f2d1b3-c159-dee9-a059-1f71027fe8cd@enterprisedb.com> References: <28172511-8297-4E6D-9DD0-421B5CF5240A@riseup.net> <516e9f9f56314f3d812615b7e6aadfa0bf45e418.camel@riseup.net> <07f2d1b3-c159-dee9-a059-1f71027fe8cd@enterprisedb.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > I assume 2TO is 2TB? Yes. 2TB > I don't understand why you're sharing just a part of the plan=20 As for the nested loop plan, what I shared is the full plan. Actually it is repeated many times, since 2M batched by 500 rows. I add it again: Merge on goliath_23 ca (cost=3D2139.75..11077.17 rows=3D0 width=3D0) -> Nested Loop Left Join (cost=3D2139.75..11077.17 rows=3D1000 width=3D575) -> Limit (cost=3D2139.19..2495.67 rows=3D1000 width=3D569) -> Index Scan using david_23_list_id_account_id_idx on david_23 (cost=3D0.29..6794.16 rows=3D19058 width=3D569) -> Index Scan using goliath_23_list_id_account_id_idx on goliath_23 ca (cost=3D0.56..8.56 rows=3D1 width=3D14) Index Cond: (list_id =3D david_23.list_id) > Well, I kinda doubt you have 17023331531230 rows (not even physically > possible with 2TB disk), so that's immediately suspicious. Below is the full plan for the strategy 2.1 (Indeed the previous email plan was truncated and wrong, sorry for that).=C2=A0 Note that both plan acome from the same partitioned by hash table with 100 parts, with a unique index on the list_id + hash_key. For strategy 2.1, I turned on enable_partitionwise_join, since david table has the same partitioning scheme as goliath including unique indexe. In both case the query is: MERGE INTO "goliath" ca =20 USING (SELECT * FROM "david" ORDER BY "list_id") AS t =20 ON t."list_id" =3D ca."list_id" =20 WHEN MATCHED THEN UPDATE SET ... WHEN NOT MATCHED THEN =20 INSERT (...) =20 VALUES (...) Except in strategy 3 david is split by limit/offset 500 on each part tables such: MERGE INTO "goliath_23" ca =20 USING (SELECT * FROM "david_23" ORDER BY "list_id" LIMIT 500 OFFSET 0) AS t =20 ON t."list_id" =3D ca."list_id" =20 WHEN MATCHED THEN UPDATE SET ... WHEN NOT MATCHED THEN =20 INSERT (...) =20 VALUES (...) =20 = = = =20 Merge on goliath ca (cost=3D178016528.81..192778842.44 rows=3D0 width=3D0) Merge on goliath_0 ca_1 Merge on goliath_1 ca_2 Merge on goliath_2 ca_3 Merge on goliath_3 ca_4 Merge on goliath_4 ca_5 Merge on goliath_5 ca_6 Merge on goliath_6 ca_7 Merge on goliath_7 ca_8 Merge on goliath_8 ca_9 Merge on goliath_9 ca_10 Merge on goliath_10 ca_11 Merge on goliath_11 ca_12 Merge on goliath_12 ca_13 Merge on goliath_13 ca_14 Merge on goliath_14 ca_15 Merge on goliath_15 ca_16 Merge on goliath_16 ca_17 Merge on goliath_17 ca_18 Merge on goliath_18 ca_19 Merge on goliath_19 ca_20 Merge on goliath_20 ca_21 Merge on goliath_21 ca_22 Merge on goliath_22 ca_23 Merge on goliath_23 ca_24 Merge on goliath_24 ca_25 Merge on goliath_25 ca_26 Merge on goliath_26 ca_27 Merge on goliath_27 ca_28 Merge on goliath_28 ca_29 Merge on goliath_29 ca_30 Merge on goliath_30 ca_31 Merge on goliath_31 ca_32 Merge on goliath_32 ca_33 Merge on goliath_33 ca_34 Merge on goliath_34 ca_35 Merge on goliath_35 ca_36 Merge on goliath_36 ca_37 Merge on goliath_37 ca_38 Merge on goliath_38 ca_39 Merge on goliath_39 ca_40 Merge on goliath_40 ca_41 Merge on goliath_41 ca_42 Merge on goliath_42 ca_43 Merge on goliath_43 ca_44 Merge on goliath_44 ca_45 Merge on goliath_45 ca_46 Merge on goliath_46 ca_47 Merge on goliath_47 ca_48 Merge on goliath_48 ca_49 Merge on goliath_49 ca_50 Merge on goliath_50 ca_51 Merge on goliath_51 ca_52 Merge on goliath_52 ca_53 Merge on goliath_53 ca_54 Merge on goliath_54 ca_55 Merge on goliath_55 ca_56 Merge on goliath_56 ca_57 Merge on goliath_57 ca_58 Merge on goliath_58 ca_59 Merge on goliath_59 ca_60 Merge on goliath_60 ca_61 Merge on goliath_61 ca_62 Merge on goliath_62 ca_63 Merge on goliath_63 ca_64 Merge on goliath_64 ca_65 Merge on goliath_65 ca_66 Merge on goliath_66 ca_67 Merge on goliath_67 ca_68 Merge on goliath_68 ca_69 Merge on goliath_69 ca_70 Merge on goliath_70 ca_71 Merge on goliath_71 ca_72 Merge on goliath_72 ca_73 Merge on goliath_73 ca_74 Merge on goliath_74 ca_75 Merge on goliath_75 ca_76 Merge on goliath_76 ca_77 Merge on goliath_77 ca_78 Merge on goliath_78 ca_79 Merge on goliath_79 ca_80 Merge on goliath_80 ca_81 Merge on goliath_81 ca_82 Merge on goliath_82 ca_83 Merge on goliath_83 ca_84 Merge on goliath_84 ca_85 Merge on goliath_85 ca_86 Merge on goliath_86 ca_87 Merge on goliath_87 ca_88 Merge on goliath_88 ca_89 Merge on goliath_89 ca_90 Merge on goliath_90 ca_91 Merge on goliath_91 ca_92 Merge on goliath_92 ca_93 Merge on goliath_93 ca_94 Merge on goliath_94 ca_95 Merge on goliath_95 ca_96 Merge on goliath_96 ca_97 Merge on goliath_97 ca_98 Merge on goliath_98 ca_99 Merge on goliath_99 ca_100 -> Hash Left Join (cost=3D178016528.81..192778842.44 rows=3D2187354 wid= th=3D579) Hash Cond: (david.list_id =3D ca.list_id) -> Append (cost=3D0.00..201068.31 rows=3D2187354 width=3D569) -> Seq Scan on david_0 david_1 (cost=3D0.00..1926.65 rows= =3D22165 width=3D569) -> Seq Scan on david_1 david_2 (cost=3D0.00..1809.13 rows= =3D20813 width=3D569) -> Seq Scan on david_2 david_3 (cost=3D0.00..1812.52 rows= =3D20852 width=3D569) -> Seq Scan on david_3 david_4 (cost=3D0.00..1648.67 rows= =3D18967 width=3D569) -> Seq Scan on david_4 david_5 (cost=3D0.00..1853.20 rows= =3D21320 width=3D569) -> Seq Scan on david_5 david_6 (cost=3D0.00..1735.68 rows= =3D19968 width=3D569) -> Seq Scan on david_6 david_7 (cost=3D0.00..1693.87 rows= =3D19487 width=3D569) -> Seq Scan on david_7 david_8 (cost=3D0.00..1872.41 rows= =3D21541 width=3D569) -> Seq Scan on david_8 david_9 (cost=3D0.00..1827.21 rows= =3D21021 width=3D569) -> Seq Scan on david_9 david_10 (cost=3D0.00..1815.91 rows= =3D20891 width=3D569) -> Seq Scan on david_10 david_11 (cost=3D0.00..1757.15 rows= =3D20215 width=3D569) -> Seq Scan on david_11 david_12 (cost=3D0.00..1624.94 rows= =3D18694 width=3D569) -> Seq Scan on david_12 david_13 (cost=3D0.00..1867.89 rows= =3D21489 width=3D569) -> Seq Scan on david_13 david_14 (cost=3D0.00..1979.76 rows= =3D22776 width=3D569) -> Seq Scan on david_14 david_15 (cost=3D0.00..1706.30 rows= =3D19630 width=3D569) -> Seq Scan on david_15 david_16 (cost=3D0.00..1828.34 rows= =3D21034 width=3D569) -> Seq Scan on david_16 david_17 (cost=3D0.00..1702.91 rows= =3D19591 width=3D569) -> Seq Scan on david_17 david_18 (cost=3D0.00..1805.74 rows= =3D20774 width=3D569) -> Seq Scan on david_18 david_19 (cost=3D0.00..3531.25 rows= =3D40625 width=3D569) -> Seq Scan on david_19 david_20 (cost=3D0.00..1522.11 rows= =3D17511 width=3D569) -> Seq Scan on david_20 david_21 (cost=3D0.00..1950.38 rows= =3D22438 width=3D569) -> Seq Scan on david_21 david_22 (cost=3D0.00..1957.16 rows= =3D22516 width=3D569) -> Seq Scan on david_22 david_23 (cost=3D0.00..1745.85 rows= =3D20085 width=3D569) -> Seq Scan on david_23 david_24 (cost=3D0.00..1730.03 rows= =3D19903 width=3D569) -> Seq Scan on david_24 david_25 (cost=3D0.00..1784.27 rows= =3D20527 width=3D569) -> Seq Scan on david_25 david_26 (cost=3D0.00..1698.39 rows= =3D19539 width=3D569) -> Seq Scan on david_26 david_27 (cost=3D0.00..1900.66 rows= =3D21866 width=3D569) -> Seq Scan on david_27 david_28 (cost=3D0.00..1813.65 rows= =3D20865 width=3D569) -> Seq Scan on david_28 david_29 (cost=3D0.00..2009.14 rows= =3D23114 width=3D569) -> Seq Scan on david_29 david_30 (cost=3D0.00..1778.62 rows= =3D20462 width=3D569) -> Seq Scan on david_30 david_31 (cost=3D0.00..1779.75 rows= =3D20475 width=3D569) -> Seq Scan on david_31 david_32 (cost=3D0.00..1892.75 rows= =3D21775 width=3D569) -> Seq Scan on david_32 david_33 (cost=3D0.00..1988.80 rows= =3D22880 width=3D569) -> Seq Scan on david_33 david_34 (cost=3D0.00..1804.61 rows= =3D20761 width=3D569) -> Seq Scan on david_34 david_35 (cost=3D0.00..1857.72 rows= =3D21372 width=3D569) -> Seq Scan on david_35 david_36 (cost=3D0.00..1782.01 rows= =3D20501 width=3D569) -> Seq Scan on david_36 david_37 (cost=3D0.00..2352.66 rows= =3D27066 width=3D569) -> Seq Scan on david_37 david_38 (cost=3D0.00..1962.81 rows= =3D22581 width=3D569) -> Seq Scan on david_38 david_39 (cost=3D0.00..2002.36 rows= =3D23036 width=3D569) -> Seq Scan on david_39 david_40 (cost=3D0.00..1852.07 rows= =3D21307 width=3D569) -> Seq Scan on david_40 david_41 (cost=3D0.00..2116.49 rows= =3D24349 width=3D569) -> Seq Scan on david_41 david_42 (cost=3D0.00..1785.40 rows= =3D20540 width=3D569) -> Seq Scan on david_42 david_43 (cost=3D0.00..1838.51 rows= =3D21151 width=3D569) -> Seq Scan on david_43 david_44 (cost=3D0.00..1931.17 rows= =3D22217 width=3D569) -> Seq Scan on david_44 david_45 (cost=3D0.00..1878.06 rows= =3D21606 width=3D569) -> Seq Scan on david_45 david_46 (cost=3D0.00..1859.98 rows= =3D21398 width=3D569) -> Seq Scan on david_46 david_47 (cost=3D0.00..1882.58 rows= =3D21658 width=3D569) -> Seq Scan on david_47 david_48 (cost=3D0.00..1791.05 rows= =3D20605 width=3D569) -> Seq Scan on david_48 david_49 (cost=3D0.00..1925.52 rows= =3D22152 width=3D569) -> Seq Scan on david_49 david_50 (cost=3D0.00..1953.77 rows= =3D22477 width=3D569) -> Seq Scan on david_50 david_51 (cost=3D0.00..1797.83 rows= =3D20683 width=3D569) -> Seq Scan on david_51 david_52 (cost=3D0.00..1680.31 rows= =3D19331 width=3D569) -> Seq Scan on david_52 david_53 (cost=3D0.00..1626.07 rows= =3D18707 width=3D569) -> Seq Scan on david_53 david_54 (cost=3D0.00..2003.49 rows= =3D23049 width=3D569) -> Seq Scan on david_54 david_55 (cost=3D0.00..1771.84 rows= =3D20384 width=3D569) -> Seq Scan on david_55 david_56 (cost=3D0.00..1700.65 rows= =3D19565 width=3D569) -> Seq Scan on david_56 david_57 (cost=3D0.00..1931.17 rows= =3D22217 width=3D569) -> Seq Scan on david_57 david_58 (cost=3D0.00..1833.99 rows= =3D21099 width=3D569) -> Seq Scan on david_58 david_59 (cost=3D0.00..1918.74 rows= =3D22074 width=3D569) -> Seq Scan on david_59 david_60 (cost=3D0.00..1885.97 rows= =3D21697 width=3D569) -> Seq Scan on david_60 david_61 (cost=3D0.00..4095.12 rows= =3D47112 width=3D569) -> Seq Scan on david_61 david_62 (cost=3D0.00..2076.94 rows= =3D23894 width=3D569) -> Seq Scan on david_62 david_63 (cost=3D0.00..2876.98 rows= =3D33098 width=3D569) -> Seq Scan on david_63 david_64 (cost=3D0.00..1647.54 rows= =3D18954 width=3D569) -> Seq Scan on david_64 david_65 (cost=3D0.00..1653.19 rows= =3D19019 width=3D569) -> Seq Scan on david_65 david_66 (cost=3D0.00..1684.83 rows= =3D19383 width=3D569) -> Seq Scan on david_66 david_67 (cost=3D0.00..1863.37 rows= =3D21437 width=3D569) -> Seq Scan on david_67 david_68 (cost=3D0.00..1717.60 rows= =3D19760 width=3D569) -> Seq Scan on david_68 david_69 (cost=3D0.00..1847.55 rows= =3D21255 width=3D569) -> Seq Scan on david_69 david_70 (cost=3D0.00..2235.14 rows= =3D25714 width=3D569) -> Seq Scan on david_70 david_71 (cost=3D0.00..2273.56 rows= =3D26156 width=3D569) -> Seq Scan on david_71 david_72 (cost=3D0.00..1745.85 rows= =3D20085 width=3D569) -> Seq Scan on david_72 david_73 (cost=3D0.00..1861.11 rows= =3D21411 width=3D569) -> Seq Scan on david_73 david_74 (cost=3D0.00..1856.59 rows= =3D21359 width=3D569) -> Seq Scan on david_74 david_75 (cost=3D0.00..1885.97 rows= =3D21697 width=3D569) -> Seq Scan on david_75 david_76 (cost=3D0.00..1665.62 rows= =3D19162 width=3D569) -> Seq Scan on david_76 david_77 (cost=3D0.00..1870.15 rows= =3D21515 width=3D569) -> Seq Scan on david_77 david_78 (cost=3D0.00..1776.36 rows= =3D20436 width=3D569) -> Seq Scan on david_78 david_79 (cost=3D0.00..1766.19 rows= =3D20319 width=3D569) -> Seq Scan on david_79 david_80 (cost=3D0.00..1812.52 rows= =3D20852 width=3D569) -> Seq Scan on david_80 david_81 (cost=3D0.00..1995.58 rows= =3D22958 width=3D569) -> Seq Scan on david_81 david_82 (cost=3D0.00..1701.78 rows= =3D19578 width=3D569) -> Seq Scan on david_82 david_83 (cost=3D0.00..1658.84 rows= =3D19084 width=3D569) -> Seq Scan on david_83 david_84 (cost=3D0.00..1840.77 rows= =3D21177 width=3D569) -> Seq Scan on david_84 david_85 (cost=3D0.00..1688.22 rows= =3D19422 width=3D569) -> Seq Scan on david_85 david_86 (cost=3D0.00..1918.74 rows= =3D22074 width=3D569) -> Seq Scan on david_86 david_87 (cost=3D0.00..2963.99 rows= =3D34099 width=3D569) -> Seq Scan on david_87 david_88 (cost=3D0.00..2075.81 rows= =3D23881 width=3D569) -> Seq Scan on david_88 david_89 (cost=3D0.00..1783.14 rows= =3D20514 width=3D569) -> Seq Scan on david_89 david_90 (cost=3D0.00..1765.06 rows= =3D20306 width=3D569) -> Seq Scan on david_90 david_91 (cost=3D0.00..1950.38 rows= =3D22438 width=3D569) -> Seq Scan on david_91 david_92 (cost=3D0.00..1840.77 rows= =3D21177 width=3D569) -> Seq Scan on david_92 david_93 (cost=3D0.00..1783.14 rows= =3D20514 width=3D569) -> Seq Scan on david_93 david_94 (cost=3D0.00..1705.17 rows= =3D19617 width=3D569) -> Seq Scan on david_94 david_95 (cost=3D0.00..1817.04 rows= =3D20904 width=3D569) -> Seq Scan on david_95 david_96 (cost=3D0.00..1977.50 rows= =3D22750 width=3D569) -> Seq Scan on david_96 david_97 (cost=3D0.00..1946.99 rows= =3D22399 width=3D569) -> Seq Scan on david_97 david_98 (cost=3D0.00..1814.78 rows= =3D20878 width=3D569) -> Seq Scan on david_98 david_99 (cost=3D0.00..1844.16 rows= =3D21216 width=3D569) -> Seq Scan on david_99 david_100 (cost=3D0.00..1769.58 row= s=3D20358 width=3D569) -> Hash (cost=3D147650973.90..147650973.90 rows=3D1653953593 widt= h=3D18) -> Append (cost=3D0.00..147650973.90 rows=3D1653953593 widt= h=3D18) -> Seq Scan on goliath_0 ca_1 (cost=3D0.00..11177255.= 56 rows=3D150300456 width=3D18) -> Seq Scan on goliath_1 ca_2 (cost=3D0.00..1234238.2= 2 rows=3D14780522 width=3D18) -> Seq Scan on goliath_2 ca_3 (cost=3D0.00..1323160.4= 2 rows=3D15336142 width=3D18) -> Seq Scan on goliath_3 ca_4 (cost=3D0.00..1256666.4= 6 rows=3D15029146 width=3D18) -> Seq Scan on goliath_4 ca_5 (cost=3D0.00..1272324.7= 5 rows=3D15157175 width=3D18) -> Seq Scan on goliath_5 ca_6 (cost=3D0.00..1270349.3= 7 rows=3D15044037 width=3D18) -> Seq Scan on goliath_6 ca_7 (cost=3D0.00..1284810.7= 4 rows=3D15261474 width=3D18) -> Seq Scan on goliath_7 ca_8 (cost=3D0.00..1263715.4= 1 rows=3D15020741 width=3D18) -> Seq Scan on goliath_8 ca_9 (cost=3D0.00..1265121.7= 3 rows=3D14953673 width=3D18) -> Seq Scan on goliath_9 ca_10 (cost=3D0.00..1309331.= 70 rows=3D15314570 width=3D18) -> Seq Scan on goliath_10 ca_11 (cost=3D0.00..1269041= .02 rows=3D15086702 width=3D18) -> Seq Scan on goliath_11 ca_12 (cost=3D0.00..1268299= .98 rows=3D15042498 width=3D18) -> Seq Scan on goliath_12 ca_13 (cost=3D0.00..1294069= .08 rows=3D15206708 width=3D18) -> Seq Scan on goliath_13 ca_14 (cost=3D0.00..1344155= .97 rows=3D15480897 width=3D18) -> Seq Scan on goliath_14 ca_15 (cost=3D0.00..1258529= .41 rows=3D15007641 width=3D18) -> Seq Scan on goliath_15 ca_16 (cost=3D0.00..1247612= .99 rows=3D14801699 width=3D18) -> Seq Scan on goliath_16 ca_17 (cost=3D0.00..1398973= .15 rows=3D15833115 width=3D18) -> Seq Scan on goliath_17 ca_18 (cost=3D0.00..1234430= .89 rows=3D14907189 width=3D18) -> Seq Scan on goliath_18 ca_19 (cost=3D0.00..1491068= .89 rows=3D16395989 width=3D18) -> Seq Scan on goliath_19 ca_20 (cost=3D0.00..1241254= .74 rows=3D14743874 width=3D18) -> Seq Scan on goliath_20 ca_21 (cost=3D0.00..1308537= .31 rows=3D15139031 width=3D18) -> Seq Scan on goliath_21 ca_22 (cost=3D0.00..1274257= .03 rows=3D15133903 width=3D18) -> Seq Scan on goliath_22 ca_23 (cost=3D0.00..1348582= .00 rows=3D15415900 width=3D18) -> Seq Scan on goliath_23 ca_24 (cost=3D0.00..1245613= .99 rows=3D14770499 width=3D18) -> Seq Scan on goliath_24 ca_25 (cost=3D0.00..1232552= .90 rows=3D14592890 width=3D18) -> Seq Scan on goliath_25 ca_26 (cost=3D0.00..1237272= .86 rows=3D14785186 width=3D18) -> Seq Scan on goliath_26 ca_27 (cost=3D0.00..1395925= .80 rows=3D15794380 width=3D18) -> Seq Scan on goliath_27 ca_28 (cost=3D0.00..1243112= .59 rows=3D14888659 width=3D18) -> Seq Scan on goliath_28 ca_29 (cost=3D0.00..1261176= .05 rows=3D15014705 width=3D18) -> Seq Scan on goliath_29 ca_30 (cost=3D0.00..1375287= .81 rows=3D15912981 width=3D18) -> Seq Scan on goliath_30 ca_31 (cost=3D0.00..1236320= .19 rows=3D14789519 width=3D18) -> Seq Scan on goliath_31 ca_32 (cost=3D0.00..1278375= .97 rows=3D15203897 width=3D18) -> Seq Scan on goliath_32 ca_33 (cost=3D0.00..1263550= .43 rows=3D14860643 width=3D18) -> Seq Scan on goliath_33 ca_34 (cost=3D0.00..1299830= .39 rows=3D15186239 width=3D18) -> Seq Scan on goliath_34 ca_35 (cost=3D0.00..1352761= .61 rows=3D15664361 width=3D18) -> Seq Scan on goliath_35 ca_36 (cost=3D0.00..1323724= .61 rows=3D15543061 width=3D18) -> Seq Scan on goliath_36 ca_37 (cost=3D0.00..1508080= .05 rows=3D16098705 width=3D18) -> Seq Scan on goliath_37 ca_38 (cost=3D0.00..1247180= .20 rows=3D15092220 width=3D18) -> Seq Scan on goliath_38 ca_39 (cost=3D0.00..1265121= .63 rows=3D14913063 width=3D18) -> Seq Scan on goliath_39 ca_40 (cost=3D0.00..1263161= .74 rows=3D15008274 width=3D18) -> Seq Scan on goliath_40 ca_41 (cost=3D0.00..1422028= .56 rows=3D15874056 width=3D18) -> Seq Scan on goliath_41 ca_42 (cost=3D0.00..1276259= .24 rows=3D15052824 width=3D18) -> Seq Scan on goliath_42 ca_43 (cost=3D0.00..1331700= .23 rows=3D15499623 width=3D18) -> Seq Scan on goliath_43 ca_44 (cost=3D0.00..1246053= .10 rows=3D14665010 width=3D18) -> Seq Scan on goliath_44 ca_45 (cost=3D0.00..1275255= .85 rows=3D15143785 width=3D18) -> Seq Scan on goliath_45 ca_46 (cost=3D0.00..1305362= .83 rows=3D15361783 width=3D18) -> Seq Scan on goliath_46 ca_47 (cost=3D0.00..1280577= .37 rows=3D15247837 width=3D18) -> Seq Scan on goliath_47 ca_48 (cost=3D0.00..1251285= .15 rows=3D14806015 width=3D18) -> Seq Scan on goliath_48 ca_49 (cost=3D0.00..1351232= .48 rows=3D15433548 width=3D18) -> Seq Scan on goliath_49 ca_50 (cost=3D0.00..1347924= .50 rows=3D15296550 width=3D18) -> Seq Scan on goliath_50 ca_51 (cost=3D0.00..1357086= .54 rows=3D15541854 width=3D18) -> Seq Scan on goliath_51 ca_52 (cost=3D0.00..1216370= .11 rows=3D14562711 width=3D18) -> Seq Scan on goliath_52 ca_53 (cost=3D0.00..1358864= .91 rows=3D15543891 width=3D18) -> Seq Scan on goliath_53 ca_54 (cost=3D0.00..1303103= .21 rows=3D15233521 width=3D18) -> Seq Scan on goliath_54 ca_55 (cost=3D0.00..1247450= .04 rows=3D14984504 width=3D18) -> Seq Scan on goliath_55 ca_56 (cost=3D0.00..1265316= .35 rows=3D14879835 width=3D18) -> Seq Scan on goliath_56 ca_57 (cost=3D0.00..1256864= .72 rows=3D14942272 width=3D18) -> Seq Scan on goliath_57 ca_58 (cost=3D0.00..1234443= .50 rows=3D14857950 width=3D18) -> Seq Scan on goliath_58 ca_59 (cost=3D0.00..1293245= .96 rows=3D15297596 width=3D18) -> Seq Scan on goliath_59 ca_60 (cost=3D0.00..1234137= .56 rows=3D14820356 width=3D18) -> Seq Scan on goliath_60 ca_61 (cost=3D0.00..1561333= .77 rows=3D16903277 width=3D18) -> Seq Scan on goliath_61 ca_62 (cost=3D0.00..1289386= .58 rows=3D15273158 width=3D18) -> Seq Scan on goliath_62 ca_63 (cost=3D0.00..1375996= .18 rows=3D15783618 width=3D18) -> Seq Scan on goliath_63 ca_64 (cost=3D0.00..1318835= .42 rows=3D15393842 width=3D18) -> Seq Scan on goliath_64 ca_65 (cost=3D0.00..1279811= .42 rows=3D15025442 width=3D18) -> Seq Scan on goliath_65 ca_66 (cost=3D0.00..1238623= .43 rows=3D14795243 width=3D18) -> Seq Scan on goliath_66 ca_67 (cost=3D0.00..1305470= .50 rows=3D15230950 width=3D18) -> Seq Scan on goliath_67 ca_68 (cost=3D0.00..1261104= .19 rows=3D14894319 width=3D18) -> Seq Scan on goliath_68 ca_69 (cost=3D0.00..1283365= .18 rows=3D15239718 width=3D18) -> Seq Scan on goliath_69 ca_70 (cost=3D0.00..1314101= .63 rows=3D15292263 width=3D18) -> Seq Scan on goliath_70 ca_71 (cost=3D0.00..1253906= .46 rows=3D14978446 width=3D18) -> Seq Scan on goliath_71 ca_72 (cost=3D0.00..1294493= .71 rows=3D15331171 width=3D18) -> Seq Scan on goliath_72 ca_73 (cost=3D0.00..1286198= .09 rows=3D15418009 width=3D18) -> Seq Scan on goliath_73 ca_74 (cost=3D0.00..1289391= .43 rows=3D15229243 width=3D18) -> Seq Scan on goliath_74 ca_75 (cost=3D0.00..1242385= .13 rows=3D14670113 width=3D18) -> Seq Scan on goliath_75 ca_76 (cost=3D0.00..1263916= .51 rows=3D14982751 width=3D18) -> Seq Scan on goliath_76 ca_77 (cost=3D0.00..1294899= .69 rows=3D15200869 width=3D18) -> Seq Scan on goliath_77 ca_78 (cost=3D0.00..1269406= .36 rows=3D14930436 width=3D18) -> Seq Scan on goliath_78 ca_79 (cost=3D0.00..1235383= .65 rows=3D14800365 width=3D18) -> Seq Scan on goliath_79 ca_80 (cost=3D0.00..1236916= .73 rows=3D14710273 width=3D18) -> Seq Scan on goliath_80 ca_81 (cost=3D0.00..1421834= .11 rows=3D16753911 width=3D18) -> Seq Scan on goliath_81 ca_82 (cost=3D0.00..1335250= .54 rows=3D15351354 width=3D18) -> Seq Scan on goliath_82 ca_83 (cost=3D0.00..1243153= .05 rows=3D14688205 width=3D18) -> Seq Scan on goliath_83 ca_84 (cost=3D0.00..1250345= .33 rows=3D14741833 width=3D18) -> Seq Scan on goliath_84 ca_85 (cost=3D0.00..1301004= .00 rows=3D14956400 width=3D18) -> Seq Scan on goliath_85 ca_86 (cost=3D0.00..1289135= .50 rows=3D15009950 width=3D18) -> Seq Scan on goliath_86 ca_87 (cost=3D0.00..1488060= .65 rows=3D16380865 width=3D18) -> Seq Scan on goliath_87 ca_88 (cost=3D0.00..1265255= .27 rows=3D15004127 width=3D18) -> Seq Scan on goliath_88 ca_89 (cost=3D0.00..1291141= .46 rows=3D15112446 width=3D18) -> Seq Scan on goliath_89 ca_90 (cost=3D0.00..1236365= .37 rows=3D14733237 width=3D18) -> Seq Scan on goliath_90 ca_91 (cost=3D0.00..1276548= .94 rows=3D14938294 width=3D18) -> Seq Scan on goliath_91 ca_92 (cost=3D0.00..1375334= .48 rows=3D16060648 width=3D18) -> Seq Scan on goliath_92 ca_93 (cost=3D0.00..1257210= .14 rows=3D14934014 width=3D18) -> Seq Scan on goliath_93 ca_94 (cost=3D0.00..1268048= .19 rows=3D14998419 width=3D18) -> Seq Scan on goliath_94 ca_95 (cost=3D0.00..1277075= .92 rows=3D15219292 width=3D18) -> Seq Scan on goliath_95 ca_96 (cost=3D0.00..1351108= .41 rows=3D15454141 width=3D18) -> Seq Scan on goliath_96 ca_97 (cost=3D0.00..1283608= .49 rows=3D15091049 width=3D18) -> Seq Scan on goliath_97 ca_98 (cost=3D0.00..1277019= .32 rows=3D15265132 width=3D18) -> Seq Scan on goliath_98 ca_99 (cost=3D0.00..1258056= .96 rows=3D15006496 width=3D18) -> Seq Scan on goliath_99 ca_100 (cost=3D0.00..122132= 5.89 rows=3D14612389 width=3D18)