แแแแ แแกแแ แแแกแแก แแ แฅแแขแแฅแขแฃแ แแก, แแกแแแ แ แแแแ แช แงแแแแแคแแ แก แแ แกแแแงแแ แแจแ, แแฅแแก แแแแแกแ แแแแแแแแ แแ แฃแแ แงแแคแแแ แแฎแแ แแแแ. แแแแแแ แแ แแ แแชแแกแ แฃแคแ แ แแแแแแ แฎแแแแ, แแแแ แฃแคแ แ แ แแฃแแ. แแ แชแแแแแแแแก แกแแฉแฅแแ แแกแ แแ แฃแแแแแกแ แแแกแจแขแแแฃแ แแแแกแแแแก, แแฅแแแ แฃแแแ แแแแฆแแ แแกแฎแแแ แแแ. แแ แ-แแ แแ แแแแแแแแ แแแแแแขแแแแก แกแแ แแฃแแ. แแฃ แแแแแแแแจแ แงแแแแ แแแแ แแชแแฃแแ แแแแแแขแแแ แจแแแซแแแแ แจแแแชแแ แแแก SQL แแแแฎแแแแแแแ แแแแแแขแแแฃแ แ แแแแแแแแแ, แแแจแแ แแฃแแขแแกแแ แแแกแแก แแ แฅแแขแแฅแขแฃแ แแจแ แแแแแแฃแ แกแแ แแแกแก แแฅแแก แกแแแฃแแแ แ แแแแแชแแแแ แแแแ แแ, แ แแแแ แช แฉแแแก, แแ แแ แจแแแแแฎแแ แแ แแ แแก แกแแแแแ แแกแ (แแ แแฅแแแ แแก แแงแแก?). แแแกแแช แแแแขแแ แแกแแแก, แ แแแแ แแแแแแฌแงแแแขแแ แแแแ แแชแแฃแแ แแแแแแขแแแแก แแ แแแแแแ แฉแแแแก แแแแแแแแแจแ แแ แ แแแแ แแแกแฌแแแแแ แแ แแแแแฌแงแแแขแแ แชแฎแแแ แแแ - แแแแแกแแแแแแแ.
แแ แแฅแแแ แแแแแ แกแแแแจแ, DomClick-แจแ แแแฃแจแแแ แแฃแแแจแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แแแแแแขแแแฃแ แ แแแแแชแแแแ แกแแฌแงแแแแก แจแแแแ แฉแฃแแแแแแ. แแแ แแแแแแ, แฉแแแแ แกแแฅแแแแแแแ แจแแแซแแแแ แแแแแฌแแ แแ แแแแแชแแแแ แแแแแแแ แแแก, แแแแ แแ, แคแแฅแขแแแ แแแแ, แแแแชแแแแแแก แกแแแฅแขแ แ แแแชแแแแแแ แคแแ แแแ. แแ แกแแแแแก แกแขแแแแแ แขแฃแแ แแแแแชแแแแ แกแแแแแแแ แ ETL / ELT, แแแแแชแแแแ แแแแแแแแก แฎแแแกแแฌแงแแแแแก แแฎแแ แแแญแแ แ แแ แแแแแขแแชแแ แแ แกแแแฃแแแ แ แฎแแแกแแฌแงแแแแแก แจแแแฃแจแแแแแ. แแแ แซแแ, แแแแ แแชแแฃแแ แแแแแ แแจแแแแแกแแแแก, แฉแแแ แแแแแแฌแงแแแขแแ โแแแแ แแแแแแแแฉแแแโ, แ แแ แแแแฅแแก แแแแแแแแ แแ แแแแแแขแแแแกแแแก แแแแชแแ แแ แแ แแแแแชแแแแ แแแแ, แ แแแแแแช แจแแแชแแแก แงแแแแ แกแแญแแ แ แแแแแชแแแก.
แแแแแแแ, แแแแแแฎแแแแ แกแฎแแแแแกแฎแแ แแแ แแแแขแแแ. แจแแกแแซแแแแแแ แแงแ แกแ แฃแแคแแกแแแแแ แกแแชแแแแก แแจแแแแแ - แฉแแแ แแ แแชแแแแ, แแแแ แแ, แแแ แแแแ แแแแฎแ แแ, แแแแแแแก แกแแแแแแ แฎแจแแ แ แชแแแแแแแแแแ แแแ แแแแแแแแแ แแแ แกแแชแแแแก แแแแแแก แแ แแแกแจแ แชแแแแแแแแแแก แจแแขแแแแก แกแแแแแแ แแแแ แแ แแชแแกแแ ( แแฃ แแแแแแ แแแแฆแฌแแ แฌแแ แแแขแแแแก, แแแฌแแ แแ แแแแแแขแแ แแแจแ แ แแแแ ). แแฅแแแ แจแแแแซแแแแ แแแฅแแแ แแแแแแขแแแแกแแแก: โแแแญแแแ, แแกแฌแแแแแ แแแแแแ แแ แแแแแแแ แแแแแแขแแแฃแ แฎแแแแแแโ, แแแแ แแ แแก แแ แแก แแแแแขแแแแแ แแแฅแแ แแแแแแก แแแแฎแแแแ แแ, แ แแแแ แช แฉแแแก, แแก แแแแแแแ แฃแแแ แแฅแแแก แแชแแแแแฃแแ, แแฃ แแก แจแแกแแซแแแแแแแ. แฉแแแ แแแแแแฌแงแแแขแแ FDW (Foreign Data Wrapper) แขแแฅแแแแแแแแก แแแแแงแแแแแ: แกแแแแแแแแแแจแ, แแก แแ แแก แกแขแแแแแ แขแฃแแ dblink, แ แแแแแแช แแ แแก SQL แกแขแแแแแ แขแจแ, แแแแ แแ แแแกแ แแแแ แแ แฃแคแ แ แแแกแแฎแแ แฎแแแแแ แแแขแแ แคแแแกแแ. แแแแก แกแแคแฃแซแแแแแ แแแแแฆแแ แแแแแฌแงแแแขแแแแแ, แ แแแแแแแช แกแแแแแแแ แคแแกแแ แแแแแแ, แแแแแแแฎแแแแ. แแแกแ แแแขแแแแแ แชแแแแ แกแขแแขแแแก แแแแแ แแ แจแแกแแซแแแ แแ แแแ แแแขแแช, แ แแแแแ แแแแแ แแแกแแฃแแ แ แแแแ แแ: แแแแแชแแแแ แแแแแก แกแฅแแแแก แกแแแฅแ แแแแแแชแแแกแแแ แแแฌแงแแแฃแแ แแแ แกแแแแแฃแ แ แแแแแชแแแแแแก แแแแขแ แแแแแแ แแ แแแแแ แกแแแแแแแแชแแแแแ. แแฅแแ แฃแแแ แแฆแแแแจแแแก, แ แแ แแก แแแแแกแแแแแ แแ แแ แแก แ แแแแฃแ แ แแแแแแขแแแฃแ แ แแแแแชแแแแ แแแแแแแกแ แแ แกแแชแแแแแแก แฉแแแแชแแแแแ, แแก แแฎแแแแ แแแแแ แแขแฃแ แแ แแแแแแแก แฌแงแแแขแก.
แฃแแแฆแแแก แแแแแแ แแกแ แแแแแแงแฃแ แแแ:
แแ แกแแแแแก PostgreSQL แแแแแชแแแแ แแแแ, แกแแแแช แแแแฎแแแ แแแแแแก แจแแฃแซแแแแ แจแแแแแฎแแ แแแแแแแแ แกแแแฃแจแแ แแแแแชแแแแแ แแ แ แแช แแแแแแ แแ, แงแแแแ แกแแ แแแกแแก แแแแแแขแแแฃแ แ แ แแแแแแ แแแแแแจแแ แแแฃแแแ แแ แแแแแชแแแแ แแแแแกแแแ FDW-แแก แกแแจแฃแแแแแแ. แแก แจแแกแแซแแแแแแก แฎแแแก แจแแแแแฎแแแก แแแฌแแ แแก แ แแแแแแแแ แแแแแชแแแแ แแแแแจแ แแ แแ แแฅแแก แแแแจแแแแแแแ แ แ แแ แแก แแก: PostgreSQL, MySQL, MongoDB แแฃ แกแฎแแ แ แแ (แคแแแแ, API, แแฃ แแแฃแแแแแแแแ แแ แแ แแก แจแแกแแคแแ แแกแ แจแแคแฃแแแ, แจแแแแซแแแแ แแแฌแแ แแ แแฅแแแแ แกแแแฃแแแ แ). แแกแ, แ แแแแ แช แฉแแแก, แงแแแแแคแแ แ แแจแแแแแแ แแ! แแแจแแ แแแ?
แงแแแแแคแแ แ แแกแ แกแฌแ แแคแแ แแ แแแ แขแแแแ แ แแ แแแแแแแ แแแฃแแแงแ, แแแจแแ, แแแแแ, แกแขแแขแแ แแ แแแ แกแแแแแแ.
แแแแจแแแแแแแแแแ แแแแก แแแ แแแแแ, แแฃ แ แแแแ แแแฃแจแแแแแก แแแกแขแแ แแกแ แแแแฎแแแแแแก แแแกแขแแแชแแฃแ แกแแ แแแ แแแแ. แ แแแแ แช แฉแแแก, แแก แแแแแแฃแ แแ, แแแแ แแ แฎแจแแ แแ แแแแแแแแแแ แแแแก แงแฃแ แแแฆแแแแก แแ แแฅแชแแแแ: postgres แงแแคแก แจแแแแแฎแแแก แแแฌแแแแแแ, แ แแแแแแแช แแแแแฃแแแแแแแแ แกแ แฃแแแแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแแแ, แแแ แแแแแก แแ แแแแแชแแแแแก แแ แแแแแ แแกแ แฃแแแแก แกแแแแแแ แแแแแแแแแแก, แแแแขแแ แจแแแแแฎแแแก แจแแกแ แฃแแแแแก แกแแฉแฅแแ แ แแแแแ แแฅแแแแ แแแแแแแแแแฃแแ แแแแแ, แแฃ แ แแแแ แแก แแแฌแแ แแแแ. แแฅแแ แฃแแแ แแฆแแแแจแแแก: แ แแแแกแแช แแแแแชแแแแแ แแแกแขแแแชแแฃแ แ แกแแ แแแ แแแแ แแแแแก, แแแ แแฆแแ แแฅแแ แแแแแฅแกแแแ, แแ แแ แกแแแแแก แแ แแคแแ แ, แ แแช แฎแแแก แจแแฃแฌแงแแแก แแแแ แแแก, แจแแกแแแแแแกแแ, แแฎแแแแ แฉแแแ แจแแแแแซแแแ แแแแแฎแแแ แแ แแ แจแแแแแแแแแแแ แแแ. แแ แกแฌแแ แแ แแแแแ แแแแแ แแแกแแฃแแ แ แฃแคแ แ แแแขแแแฃแ แแ.
แแแ แขแแแ แแแแฎแแแแ แแ แแแแแ แแแกแแแ แแ แแแ
แแแแก แกแแฉแแแแแแแแ, แแฃ แ แแแแ แแแฎแแแก Postgres แแแกแขแแแชแแฃแ แกแแ แแแ แแ 6 แแแแแแแ แ แแแแก แชแฎแ แแแก, แแแแแ แจแแแฎแแแแ แแแ แขแแ แแแแแแก.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table;
Aggregate (cost=418383.23..418383.24 rows=1 width=8) (actual time=3857.198..3857.198 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..402376.14 rows=6402838 width=0) (actual time=4.874..3256.511 rows=6406868 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Remote SQL: SELECT NULL FROM fdw_schema.table
Planning time: 0.986 ms
Execution time: 3857.436 ms
VERBOSE แแแแแชแฎแแแแก แแแแแงแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแฎแแ แจแแแแแฎแแ, แ แแแแแแช แแแแแแแแแแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแ แแ แ แแแแแก แจแแแแแแแก แแแแแฆแแแ แจแแแแแแแ แแแแฃแจแแแแแแกแแแแก (RemoteSQL string).
แแแแแ แฌแแแแแแ แชแแขแ แฃแคแ แ แฌแแ แแ แแแแแแแขแแ แ แแแแแแแแ แคแแแขแ แ แฉแแแแก แจแแแแแฎแแแก: แแ แแ แแแแแแฃแ แ แแแแ, แแ แแ แจแแกแแแแ แแแจแแฃแแแก แแแขแแ แแแแแ แแ แแ แแแ jsonb.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta->>'source' = 'test';
Aggregate (cost=577487.69..577487.70 rows=1 width=8) (actual time=27473.818..25473.819 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..577469.21 rows=7390 width=0) (actual time=31.369..25372.466 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND (("table".meta ->> 'source'::text) = 'test'::text) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 5046843
Remote SQL: SELECT created_dt, is_active, meta FROM fdw_schema.table
Planning time: 0.665 ms
Execution time: 27474.118 ms
แแก แแ แแก แแก แแแแแแขแ, แ แแแแแกแแช แงแฃแ แแแฆแแแ แฃแแแ แแแแฅแชแแแ แแแแฎแแแแแก แฌแแ แแกแแก. แคแแแขแ แแแ แแ แแงแ แแแแแชแแแฃแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแ, แ แแช แแแแก แแแจแแแแก, แ แแ แแแก แจแแกแแกแ แฃแแแแแแ, postgres แแญแแ แก แงแแแแ 6 แแแแแแ แ แแแก, แ แแแ แแแฎแแแก แแแแแแฃแ แแ แแแคแแแขแแ แ (แคแแแขแ แแก แฎแแแ) โโแแ แจแแแกแ แฃแแแก แแแ แแแแชแแ แแแแแแแแแแแ. แฌแแ แแแขแแแแก แแแกแแฆแแแ แแ แแก แจแแแแแฎแแแก แแแฌแแ แ แแกแ, แ แแ แคแแแขแ แแแ แแแแแแชแแก แแแกแขแแแชแแฃแ แแแแฅแแแแก แแ แฉแแแ แแแแแฆแแ แแ แจแแแแ แแแแ แแฎแแแแ แกแแญแแ แ แ แแแแแ.
แแก แ แแฆแแช แกแแกแฃแแแแแ
แแแแแแฃแ แ แแแแแแแ แงแแแแแคแแ แ แแแ แขแแแแ. แแแแแแแแ แแแ แจแแแแแฎแแแจแ แแ แแแแแแ แแแแ แแขแแ แแก แแแแ แแงแ is. แแฃ แจแแแชแแแแ =, แแแจแแ แแแแแฆแแแ แจแแแแแ แจแแแแแก:
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active = True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta->>'source' = 'test';
Aggregate (cost=508010.14..508010.15 rows=1 width=8) (actual time=19064.314..19064.314 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..507988.44 rows=8679 width=0) (actual time=33.035..18951.278 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: ((("table".meta ->> 'source'::text) = 'test'::text) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 3567989
Remote SQL: SELECT created_dt, meta FROM fdw_schema.table WHERE (is_active)
Planning time: 0.834 ms
Execution time: 19064.534 ms
แ แแแแ แช แฎแแแแแ, แคแแแขแ แ แแแคแ แแแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแ แแ แจแแกแ แฃแแแแแก แแ แ แจแแแชแแ แแ 27-แแแ 19 แฌแแแแแแ.
แแฆแกแแแแจแแแแแ, แ แแ แแแแ แแขแแ แ is แแแแกแฎแแแแแแแ แแแแ แแขแแ แแกแแแ = แแก, แ แแแแแกแแช แจแแฃแซแแแ แแฃแจแแแแ Null แแแแจแแแแแแแแ. แฒแก แแแจแแแแก, แ แแ แแ แแ แแก แกแแแแ แแแ แคแแแขแ แจแ แแแขแแแแแก แแแแจแแแแแแแแแก False แแ Null, แฎแแแ != แแแ แแแแแ แแแขแแแแแก แแฎแแแแ แชแ แฃ แแแแจแแแแแแแแแก. แแแแขแแ, แแแแ แแขแแ แแก แจแแชแแแแกแแก แแ แแ แแก แแฅแแแ แฃแแแ แแแแแกแชแแ แคแแแขแ แก แแ แ แแแ แแแ OR แแแแ แแขแแ แแ, แแแแแแแแแ, WHERE (col != True) OR (col แแ แแก null).
แแแแแแฃแ แแ แแแแแ แแแฃแแ, แแแแแแแก. แแแแแแ แแฃแแแ, แแแแฃแแ แฃแแแแ แคแแแขแ แก แแแแแแฃแ แ แแแแจแแแแแแแแ แแแแแแแแ แแแ แคแแ แแแจแ, แ แแแ แแแแแฃแแแแแแแแ แแแแแแฎแแแแ แกแฎแแ แชแแแแแแแแแแก แแคแแฅแขแ.
timestamptz? แฐแช
แแแแแแแ, แฎแจแแ แแ แแแฌแแแ แแฅแกแแแ แแแแแขแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แกแฌแแ แแ แแแฌแแ แแ แแแแฎแแแแ, แ แแแแแแช แแแแชแแแก แแแกแขแแแชแแฃแ แกแแ แแแ แแแก แแ แแฎแแแแ แแแแก แจแแแแแ แแแซแแแแแ แแฎแกแแ, แแฃ แ แแขแแ แฎแแแแ แแก. แแแแก แจแแกแแฎแแ แซแแแแแ แชแแขแ แแแคแแ แแแชแแ แแแแซแแแแแแ แแแขแแ แแแขแจแ. แแกแ แ แแ, แแฅแกแแแ แแแแแขแแแจแ แแฆแแแแแฉแแแแ, แ แแ แคแแฅแกแแ แแแฃแแ แแแ แแฆแแก แคแแแขแ แ แแคแแแฅแแแแ แแแคแ แแแแแก แแแกแขแแแชแแฃแ แกแแ แแแ แแ, แแแแ แแ แ แแแแกแแช แแแแแแ แแแ แแฆแแก แแแแแแแฃแ แแ แแแงแแแแแ, แแแแแแแแแ, now() แแ CURRENT_DATE, แแก แแ แฎแแแแ. แฉแแแแก แแแแแแแแจแ แแแแแแแขแแ แคแแแขแ แ แแกแ, แ แแ แกแแแขแ create_at แจแแแชแแแแแก แฌแแ แกแฃแแจแ แแฃแกแขแแ 1 แแแแก แแแแแชแแแแแก (BETWEEN CURRENT_DATE - INTERVAL '7 แแแ' แแ CURRENT_DATE - INTERVAL '6 แแแ'). แ แ แแแแแแแแแ แแ แจแแแแฎแแแแแจแ?
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt >= (SELECT CURRENT_DATE::timestamptz - INTERVAL '7 month')
AND created_dt <(SELECT CURRENT_DATE::timestamptz - INTERVAL '6 month')
AND meta->>'source' = 'test';
Aggregate (cost=306875.17..306875.18 rows=1 width=8) (actual time=4789.114..4789.115 rows=1 loops=1)
Output: count(1)
InitPlan 1 (returns $0)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.007..0.008 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '7 mons'::interval)
InitPlan 2 (returns $1)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.002..0.002 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)
-> Foreign Scan on fdw_schema."table" (cost=100.02..306874.86 rows=105 width=0) (actual time=23.475..4681.419 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND (("table".meta ->> 'source'::text) = 'test'::text))
Rows Removed by Filter: 76934
Remote SQL: SELECT is_active, meta FROM fdw_schema.table WHERE ((created_dt >= $1::timestamp with time zone)) AND ((created_dt < $2::timestamp with time zone))
Planning time: 0.703 ms
Execution time: 4789.379 ms
แฉแแแ แจแแแแแแแแแ แแแแแแแแแแแกแแแแก, แฌแแแแกแฌแแ แแแแแแแแแแ แแแ แแฆแ แฅแแแแแแฎแแแแแจแ แแ แแแแแแชแ แฃแแแ แแแแแแแแแฃแแ แชแแแแแ แคแแแขแ แจแ. แแ แแ แแแแแจแแแแแ แจแแกแแแแจแแแแ แจแแแแแ แแแแแชแ, แจแแแแแฎแแ แแแแฅแแแก 6-แฏแแ แฃแคแ แ แกแฌแ แแคแ แแแฎแแ!
แแฅ แแแแแ แแแแจแแแแแแแแแแ แกแแคแ แแฎแแแ: แฅแแแแแแฎแแแแแจแ แแแแแชแแแแ แขแแแ แฃแแแ แแงแแก แแแแแ, แ แแช แแ แแแแแก, แ แแแแแแแช แฉแแแ แแแแคแแแขแ แแแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแแแแแแแแแ แแแแแฌแงแแแขแก, แ แแ แ แแแแแ แขแแแแแ แแแแกแฎแแแแแแฃแแแ แแ แแแ แแแ แ แแแจแ แฃแแแ แแแแแฆแแ แงแแแแ แแแแแชแแแแแ แแ แแแคแแแขแ แแ แแกแแแ แแแแแแแแ แแแแ.
แแแแฃแแ แฃแแแแ แคแแแขแ แก แแแ แแฆแแก แแแฎแแแแแ แแแแแแแแ แแแ แแแแจแแแแแแแแแแ.
แคแ แแแ vs. jsonb
แแแแแแแ, แแแแแแฃแ แ แแแแแแ แแ แแแ แแฆแแแ แฃแแแ แกแแแแแ แแกแแ แแฉแฅแแ แแแก แฉแแแแก แจแแแแแฎแแแก, แแแแ แแ แแงแ แแแแแ แแ แแ แแแแแชแแแแ แขแแแ. แแแก แแแแ แคแแแขแ แแชแแแกแแแ แแ แซแแแ, แแแ แแแแ แแแแฎแ แแ, แฏแแ แแ แแแกแ แฃแแแแฃแแ, แแฃแแชแ แแฅแแช แแ แแก แฌแแ แแแขแแแแแ. แแกแ แ แแ, แแ, แ แแแแ แแแแแฎแแ แฎแแ แคแแแขแ แแก แแแแแ jsonb แแแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแ.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta @> '{"source":"test"}'::jsonb;
Aggregate (cost=245463.60..245463.61 rows=1 width=8) (actual time=6727.589..6727.590 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=1100.00..245459.90 rows=1478 width=0) (actual time=16.213..6634.794 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 619961
Remote SQL: SELECT created_dt, is_active FROM fdw_schema.table WHERE ((meta @> '{"source": "test"}'::jsonb))
Planning time: 0.747 ms
Execution time: 6727.815 ms
แแแแ แแขแแ แแแแก แคแแแขแ แแชแแแก แแแชแแแแ, แแฅแแแ แฃแแแ แแแแแแงแแแแ แแ แแ แแแแ แแขแแ แแก แแ แกแแแแแ. jsonb แแแแกแฎแแแแแแฃแแจแ. 7 แฌแแแ แแ แแแแแแแฃแ แ 29-แแก แแแชแแแแ. แฏแแ แฏแแ แแแแ, แแก แแ แแก แแ แแแแแ แแ แฌแแ แแแขแแแฃแแ แแแ แแแแขแ แคแแแขแ แแแแก แแแแแกแแขแแแแ jsonb แแแกแขแแแชแแฃแ แกแแ แแแ แแ, แแแแ แแ แแฅ แแแแจแแแแแแแแแแ แแ แแ แจแแแฆแฃแแแแก แแแแแแแแกแฌแแแแแ: แฉแแแ แแแงแแแแแ แแแแแชแแแแ แแแแแก 9.6 แแแ แกแแแก, แแแแ แแ แแแ แแแแก แแแแแก แแแแแแแแ แแแแ แขแแกแขแแแแก แแแกแ แฃแแแแแก แแ 12 แแแ แกแแแแ แแแแแกแแแแก. แ แแแแ แช แแ แแแแแแแฎแแแแ, แแแแฌแแ แ แ แแแแ แแแแฅแแแแ, แ แแแแแ แแแแ แ แชแแแแแแแแ, แ แแกแแแแกแแช แแแแ แ แแแแแแ: json_path, แแฎแแแ CTE แฅแชแแแ, แฅแแแแแ (แแ แกแแแแแก แแ-10 แแแ แกแแแแแ). แซแแแแแ แแแแแ แแแแ แแชแแแ.
แแแแกแ แฃแแ แแแ
แฉแแแ แจแแแแแแฌแแแ, แแฃ แ แแแแ แแแฅแแแแแแก แแแแแแฃแแ แชแแแแแแแ แแแแแแแแฃแแแฃแ แแ แจแแแแแฎแแแก แกแแฉแฅแแ แแแ. แแฎแแ แแแแฎแแ, แ แ แแแฎแแแแ, แ แแแแกแแช แกแแแแแ แคแแแขแ แ แกแฌแแ แแ แแ แแก แแแฌแแ แแแ.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active = True
AND created_dt >= (SELECT CURRENT_DATE::timestamptz - INTERVAL '7 month')
AND created_dt <(SELECT CURRENT_DATE::timestamptz - INTERVAL '6 month')
AND meta @> '{"source":"test"}'::jsonb;
Aggregate (cost=322041.51..322041.52 rows=1 width=8) (actual time=2278.867..2278.867 rows=1 loops=1)
Output: count(1)
InitPlan 1 (returns $0)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.010..0.010 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '7 mons'::interval)
InitPlan 2 (returns $1)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.003..0.003 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)
-> Foreign Scan on fdw_schema."table" (cost=100.02..322041.41 rows=25 width=0) (actual time=8.597..2153.809 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Remote SQL: SELECT NULL FROM fdw_schema.table WHERE (is_active) AND ((created_dt >= $1::timestamp with time zone)) AND ((created_dt < $2::timestamp with time zone)) AND ((meta @> '{"source": "test"}'::jsonb))
Planning time: 0.820 ms
Execution time: 2279.087 ms
แแแแฎ, แจแแแแแฎแแ แฃแคแ แ แ แแฃแแแ แแแแแแงแฃแ แแแ, แแก แแ แแก แแซแฃแแแแแแ แคแแกแ, แแแแ แแ แจแแกแ แฃแแแแแก แกแแฉแฅแแ แ 2 แฌแแแแ, แ แแช 10-แฏแแ แฃแคแ แ แกแฌแ แแคแแ! แแ แฉแแแ แแกแแฃแแ แแแ แแแ แขแแ แแแแฎแแแแแแ แแแแแชแแแแ แจแแแแ แแแแ แแชแแ แ แแแแแแแฅแขแแ. แ แแแแฃแ แ แแแแฎแแแแแ แฉแแแ แแแแแฆแแ แ แแแแแแแแ แแกแแฃแแฏแแ แแแแ แแ.
แจแแฏแแแแแแกแแแแก: แแฃ แแงแแแแแ PostgreSQL-แก FDW-แแแ แแ แแแ, แงแแแแแแแแก แจแแแแแฌแแแ, แแแแแแแแแ แแฃ แแ แ แงแแแแ แคแแแขแ แ แแแกแขแแแชแแฃแ แกแแ แแแ แแ แแ แแแแงแแคแแแ แแแ แฉแแแแ... แงแแแแ แจแแแแฎแแแแแจแ, แแแแแ, แกแแแแ แแ แจแแแแ แแแแ แชแฎแ แแแแแก แกแฎแแแแแกแฎแแ แกแแ แแแ แแแแแแ. แแแแ แแ แแก แกแฎแแ แกแขแแขแแแก แแแแแแแ.
แฒแแแแแแแ แงแฃแ แแแฆแแแแกแแแแก! แกแแแแแแแแแแ แแแแแกแแแแ แแแแฎแแแแ, แแแแแแขแแ แแแ แแ แแกแขแแ แแแแ แแฅแแแแ แแแแแชแแแแแแแก แจแแกแแฎแแ แแแแแแขแแ แแแจแ.
แฌแงแแ แ: www.habr.com