PgHero
No long running queries
Connections healthy 21
Vacuuming healthy
No columns near integer overflow
No invalid indexes or constraints
No duplicate indexes
1 suggested index
27 slow queries

Suggested Indexes

Add indexes to speed up queries.


Details
CREATE INDEX CONCURRENTLY ON bills (service_request_id)

to speed up

Total Time Average Time Calls
9 min 0.2% 23 ms 23,676 cims1 · details
SELECT     "bills".* FROM       "bills"  WHERE     ("bills"."service_request_id" = $1) LIMIT $2

Slow Queries

Slow queries take 20 ms or more on average and have been called at least 100 times.

Explain queries to see where to add indexes.

Total Time Average Time Calls
102 min 2% 1,171 ms 5,245 pghero · details
SELECT n.nspname AS table_schema, c.relname AS table, attname AS column, format_type(a.atttypid, a.atttypmod) AS column_type, pg_get_expr(d.adbin, d.adrelid) AS default_value FROM pg_catalog.pg_attribute a INNER JOIN pg_catalog.pg_class c ON c.oid = a.attrelid INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace INNER JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum) = (d.adrelid, d.adnum) WHERE NOT a.attisdropped AND a.attnum > $1 AND pg_get_expr(d.adbin, d.adrelid) LIKE $2 AND n.nspname NOT LIKE $3 /*pghero*/
68 min 2% 24 ms 171,921 cims1 · details
SELECT     sr.id as Request_id ,sr.request_date, sg.name as Service_group,s.name ,srd.billing_status,ltrd.id as ltrdid,inv.id as invid,ltrd.status as Lab_Status,inv.status As Imaging_Status,srd.id as ser_req_lab FROM       "service_requests"  as sr join service_request_details as srd on sr.id = srd.service_request_id
                               join services as s on srd.service_id = s.id
                              join service_groups as sg on s.service_group_id =sg.id
                               left join lab_test_request_details as ltrd on srd.id = ltrd.service_request_detail_id
                               left outer join investigation_request_details as inv on srd.id = inv.service_request_detail_id WHERE     (sg.clinical_system_id in ($1) and sr.Patient_id =$2) ORDER BY  sr.id desc
61 min 1% 68 ms 53,824 erps1 · details
SELECT     "patients".* FROM       "patients"  WHERE     (patients.extid not ilike $1) AND (lower(patients.name) iLIKE $2) AND (lower(patients.last_name) iLIKE $3) ORDER BY  patients.id
53 min 1% 31 ms 102,563 erps2 · details
UPDATE "extids" SET "current_value" = $1, "lock_version" = $2, "updated_at" = $3  WHERE (("extids"."id" = $4 AND "extids"."lock_version" = $5))
48 min 1% 80 ms 36,188 erps1 · details
SELECT     "patients".* FROM       "patients"  WHERE     (patients.extid not ilike $1) AND (lower(patients.name) iLIKE $2) AND (lower(patients.last_name) iLIKE $3) AND (patients.id in (select patient_id from visits where location_id = $4)) ORDER BY  patients.id LIMIT $5 OFFSET $6
41 min 0.9% 192 ms 12,762 erps1 · details
SELECT     distinct(bd.*) FROM       "bill_details"  as bd inner join bills as b on b.id=bd.bill_id inner join itemwise_corporate_coverages as iwcc on iwcc.corporate_id = b.corporate_id WHERE     (iwcc.corporate_id=$1 and bd.bill_id=$2 and bd.patient_share > $3)
37 min 0.8% 195 ms 11,405 cims1 · details
SELECT     "icd10_codes".* FROM       "icd10_codes"  WHERE     (icd_name ilike $1) ORDER BY  icd_name LIMIT $2
34 min 0.8% 20 ms 100,898 erps1 · details
SELECT     "item_reorder_levels".* FROM       "item_reorder_levels"  WHERE     (item_id=$1 and inventory_head_id=$2) LIMIT $3
30 min 0.7% 336 ms 5,436 pghero · details
SELECT schemaname AS schema, t.relname AS table, ix.relname AS name, regexp_replace(pg_get_indexdef(i.indexrelid), $1, $2) AS columns, regexp_replace(pg_get_indexdef(i.indexrelid), $3, $4) AS using, indisunique AS unique, indisprimary AS primary, indisvalid AS valid, indexprs::text, indpred::text, pg_get_indexdef(i.indexrelid) AS definition FROM pg_index i INNER JOIN pg_class t ON t.oid = i.indrelid INNER JOIN pg_class ix ON ix.oid = i.indexrelid LEFT JOIN pg_stat_user_indexes ui ON ui.indexrelid = i.indexrelid WHERE schemaname IS NOT NULL ORDER BY 1, 2 /*pghero*/
25 min 0.6% 72 ms 20,767 erps1 · details
SELECT * FROM ( SELECT     DISTINCT ON ("patients".id) "patients".id, patients.id AS alias_0 FROM       "patients" LEFT OUTER JOIN "address_details" ON "address_details"."addressable_id" = "patients"."id" AND "address_details"."addressable_type" = $1 WHERE     (patients.extid not ilike $2) AND (address_details.mobile_no =$3) AND (patients.id in (select patient_id from visits where location_id = $4))) AS id_list ORDER BY id_list.alias_0  LIMIT $5 OFFSET $6
25 min 0.6% 37 ms 39,529 cims1 · details
SELECT     a.*,e.id as encounter_id FROM       "appointments"  as a inner join visits as v on a.visit_id=v.id inner join encounters as e on v.id = e.visit_id
                                                                                inner join service_request_details as srd on srd.id=a.service_request_detail_id                                                                                                         inner join service_requests as sq on sq.id=srd.service_request_id WHERE     (a.check1 is null and e.status = $1 and e.name !=$2 and v.patient_type =$3 and date(a.app_start_date_time) >= $4 and  date(a.app_start_date_time) <= $5 and a.app_status = $6  and srd.billing_status != $7 and srd.billing_status = $8 and sq.clinician_id in ($9) and sq.location_id = $10 and a.is_telemedicine is null) ORDER BY  a.patient_criticality_id desc
24 min 0.5% 63 ms 22,403 erps1 · details
SELECT     "patients".* FROM       "patients"  WHERE     (patients.extid not ilike $1) AND (lower(patients.last_name) iLIKE $2) AND (patients.id in (select patient_id from visits where location_id = $3)) ORDER BY  patients.id LIMIT $4 OFFSET $5
17 min 0.4% 52 ms 19,251 erps1 · details
SELECT     "patients".* FROM       "patients"  WHERE     (patients.extid not ilike $1) AND (lower(patients.name) iLIKE $2) AND (patients.id in (select patient_id from visits where location_id = $3)) ORDER BY  patients.id LIMIT $4 OFFSET $5
14 min 0.3% 91 ms 9,330 erps1 · details
SELECT COUNT(*) AS count_id FROM (SELECT $1 FROM "patients"  WHERE     (patients.extid not ilike $2) AND (lower(patients.last_name) iLIKE $3) AND (patients.id in (select patient_id from visits where location_id = $4))) AS subquery
13 min 0.3% 35 ms 22,646 cims1 · details
SELECT     ocpd.narration as narration,ocpd.created_by as created_by,ocpd.created_at as created_at,ocpd.opd_card_prescription_id,ocpd.include_note_in_dashboard,ocp.patient_id,ocpd.id,ocpd.narration_type as narration_type FROM       "opd_card_prescription_details"  as ocpd inner join opd_card_prescriptions as ocp on ocp.id =  ocpd.opd_card_prescription_id WHERE     (ocp.patient_id=$1 and ocpd.narration_type in ($2,$3) and ocpd.status=$4) ORDER BY  ocpd.opd_card_prescription_id desc,ocpd.created_at desc
12 min 0.3% 28 ms 24,703 erps1 · details
SELECT     "generic_names".* FROM       "generic_names"  WHERE     (status=$1 and healthcare_institution_id=$2) ORDER BY  lower(name)
12 min 0.3% 66 ms 10,494 erps1 · details
SELECT     "bills".* FROM       "bills"  WHERE     (date(bill_date) >= $1 and date(bill_date) <= $2) AND (narration != $3) AND (is_discount_approved = $4) AND (bills.location_id = $5)
11 min 0.3% 111 ms 6,184 cims1 · details
SELECT     "pains".* FROM       "pains"  WHERE     (patient_id=$1)
11 min 0.3% 74 ms 9,076 erps1 · details
SELECT COUNT(*) AS count_id FROM (SELECT $1 FROM "patients"  WHERE     (patients.extid not ilike $2) AND (lower(patients.name) iLIKE $3) AND (patients.id in (select patient_id from visits where location_id = $4))) AS subquery
11 min 0.3% 109 ms 6,184 cims1 · details
SELECT     "flaccs".* FROM       "flaccs"  WHERE     (patient_id=$1)
11 min 0.2% 73 ms 8,620 erps2 · details
SELECT     "patients".* FROM       "patients"  WHERE     (patients.extid not ilike $1) AND (lower(patients.name) iLIKE $2) AND (lower(patients.last_name) iLIKE $3) ORDER BY  patients.id
10 min 0.2% 90 ms 6,515 erps2 · details
SELECT     "patients".* FROM       "patients"  WHERE     (patients.extid not ilike $1) AND (lower(patients.name) iLIKE $2) AND (lower(patients.last_name) iLIKE $3) AND (patients.id in (select patient_id from visits where location_id = $4)) ORDER BY  patients.id LIMIT $5 OFFSET $6
10 min 0.2% 40 ms 14,535 cims1 · details
SELECT     "patients".* FROM       "patients"  WHERE     (lower(patients.name) iLIKE $1) AND (lower(patients.last_name) iLIKE $2) AND (patients.id in (select patient_id from visits where location_id = $3)) LIMIT $4 OFFSET $5
9 min 0.2% 23 ms 23,676 cims1 · details
SELECT     "bills".* FROM       "bills"  WHERE     ("bills"."service_request_id" = $1) LIMIT $2
Details
CREATE INDEX CONCURRENTLY ON bills (service_request_id)
8 min 0.2% 99 ms 5,079 erps2 · details
SELECT * FROM ( SELECT     DISTINCT ON ("patients".id) "patients".id, patients.id AS alias_0 FROM       "patients" LEFT OUTER JOIN "address_details" ON "address_details"."addressable_id" = "patients"."id" AND "address_details"."addressable_type" = $1 WHERE     (patients.extid not ilike $2) AND (address_details.mobile_no =$3) AND (patients.id in (select patient_id from visits where location_id = $4))) AS id_list ORDER BY id_list.alias_0  LIMIT $5 OFFSET $6
8 min 0.2% 211 ms 2,283 erps2 · details
SELECT     distinct(bd.*) FROM       "bill_details"  as bd inner join bills as b on b.id=bd.bill_id inner join itemwise_corporate_coverages as iwcc on iwcc.corporate_id = b.corporate_id WHERE     (iwcc.corporate_id=$1 and bd.bill_id=$2 and bd.patient_share > $3)
8 min 0.2% 109 ms 4,388 pghero · details
SELECT n.nspname AS schema, c.relname AS relation, CASE c.relkind WHEN $1 THEN $2 WHEN $3 then $4 ELSE $5 END AS type, pg_table_size(c.oid) AS size_bytes FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname NOT IN ($6, $7) AND n.nspname !~ $8 AND c.relkind IN ($9, $10, $11) ORDER BY pg_table_size(c.oid) DESC, 2 ASC /*pghero*/