explain.depesz.com

PostgreSQL's explain analyze made readable

Result: B7qZ

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

Unique (cost=28,742.25..28,742.32 rows=1 width=2,770) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Sort (cost=28,742.25..28,742.25 rows=1 width=2,770) (actual rows= loops=)

  • Sort Key: "PC0".providerid, "PC0".salutation, "PC0".providerstatus, "PC0".providertype, "PC0".graduationyear, "PC0".graduationschool, "PC0".doctorname, "PC0".providerspecialty, "PC0".degree, "PC0".birthdate, "PC0".accountid, "PC0".providerrole, "PC0".suffix, "PC0".middlename, "PC0".lastname, "PC0".firstname, "Practice".practicename, "Practice".practiceid, "Practice".street1, "Practice".street2, "Practice".pycity, "Practice".pystate, "Practice".pycountry, "Practice".zip, "BillingAccounts".billingaccountid
3. 0.000 0.000 ↓ 0.0

Gather (cost=16,947.27..28,742.24 rows=1 width=2,770) (actual rows= loops=)

  • Workers Planned: 1
4. 0.000 0.000 ↓ 0.0

Nested Loop (cost=15,947.27..27,742.14 rows=1 width=2,770) (actual rows= loops=)

  • Join Filter: ((("PhoneNum".pyphonenumber)::text = '5616595333'::text) OR (upper(("PC0".lastname)::text) = 'Bentley'::text) OR ((("PC0".providerid)::text = '512'::text)AND (("BillingAccounts".billingaccountid)::text = '10-1531039'::text)))
5. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=15,946.85..27,741.66 rows=1 width=106) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=15,946.42..23,575.79 rows=1 width=96) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Nested Loop (cost=15,946.00..23,575.34 rows=1 width=106) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Parallel Hash Join (cost=15,945.58..23,574.89 rows=1 width=44) (actual rows= loops=)

  • Hash Cond: ((("PracticeRef".practiceid)::text = ("PracticeAccount".practiceid)::text) AND (("BillingRef".billingaccountid)::text = ("PracticeAccount".billingaccountid)::text))
9. 0.000 0.000 ↓ 0.0

Parallel Hash Join (cost=10,175.25..16,423.54 rows=263,053 width=28) (actual rows= loops=)

  • Hash Cond: (("BillingRef".providerid)::text = ("PracticeRef".providerid)::text)
10. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on gcx_providerxaccounts "BillingRef" (cost=0.00..4,411.72 rows=197,472 width=16) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Parallel Hash (cost=6,819.00..6,819.00 rows=268,500 width=12) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on gcx_practicexprovides "PracticeRef" (cost=0.00..6,819.00 rows=268,500 width=12) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Parallel Hash (cost=3,455.33..3,455.33 rows=154,333 width=16) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on gcx_practicexaccounts "PracticeAccount" (cost=0.00..3,455.33 rows=154,333 width=16) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Index Scan using gcx_practice_table_pk on gcx_practice "Practice" (cost=0.42..0.45 rows=1 width=74) (actual rows= loops=)

  • Index Cond: ((practiceid)::text = ("PracticeRef".practiceid)::text)
16. 0.000 0.000 ↓ 0.0

Index Only Scan using gcx_billingaccount_pk on gcx_billingaccount "BillingAccounts" (cost=0.42..0.44 rows=1 width=10) (actual rows= loops=)

  • Index Cond: (billingaccountid = ("BillingRef".billingaccountid)::text)
17. 0.000 0.000 ↓ 0.0

Index Only Scan using gcx_phonenumbers_index on gcx_phonenumbers "PhoneNum" (cost=0.42..4,165.85 rows=2 width=20) (actual rows= loops=)

  • Index Cond: ((targetid = ("BillingAccounts".billingaccountid)::text) AND (targettype = 'Account'::text))
18. 0.000 0.000 ↓ 0.0

Index Scan using pr_gw_data_providers_7024f_pk on gcx_provider "PC0" (cost=0.42..0.46 rows=1 width=2,686) (actual rows= loops=)

  • Index Cond: ((providerid)::text = ("PracticeRef".providerid)::text)