PgHero
No long running queries
Connections healthy 17
Vacuuming healthy
No columns near integer overflow
No invalid indexes or constraints
No duplicate indexes
2 suggested indexes
22 slow queries

Suggested Indexes

Add indexes to speed up queries.


Details
CREATE INDEX CONCURRENTLY ON family_banks (checkout_request_id)

to speed up

Total Time Average Time Calls
18 min 0.6% 26 ms 41,411 erps1 · details
SELECT     "family_banks".* FROM       "family_banks"  WHERE     ("family_banks"."checkout_request_id" = $1) ORDER BY  family_banks.id DESC LIMIT $2

Details
CREATE INDEX CONCURRENTLY ON icd10_codes USING gist (icd_name gist_trgm_ops)

to speed up

Total Time Average Time Calls
24 min 0.8% 171 ms 8,375 cims1 · details
SELECT     "icd10_codes".* FROM       "icd10_codes"  WHERE     (icd_name ilike $1) ORDER BY  icd_name 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
89 min 3% 1,118 ms 4,758 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*/
30 min 1.0% 49 ms 36,976 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
26 min 0.9% 327 ms 4,853 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*/
26 min 0.9% 25 ms 63,956 erps2 · details
UPDATE "extids" SET "current_value" = $1, "lock_version" = $2, "updated_at" = $3  WHERE (("extids"."id" = $4 AND "extids"."lock_version" = $5))
24 min 0.8% 202 ms 7,214 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)
24 min 0.8% 171 ms 8,375 cims1 · details
SELECT     "icd10_codes".* FROM       "icd10_codes"  WHERE     (icd_name ilike $1) ORDER BY  icd_name LIMIT $2
Details
CREATE INDEX CONCURRENTLY ON icd10_codes USING gist (icd_name gist_trgm_ops)
22 min 0.7% 57 ms 22,775 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
18 min 0.6% 26 ms 41,411 erps1 · details
SELECT     "family_banks".* FROM       "family_banks"  WHERE     ("family_banks"."checkout_request_id" = $1) ORDER BY  family_banks.id DESC LIMIT $2
Details
CREATE INDEX CONCURRENTLY ON family_banks (checkout_request_id)
15 min 0.5% 195 ms 4,758 pghero · details
SELECT last_value FROM "public"."clinical_note_edits_id_seq" UNION ALL SELECT last_value FROM "public"."clinical_note_visits_id_seq" UNION ALL SELECT last_value FROM "public"."organisms_antibiotics_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."postmortem_injuries_id_seq" UNION ALL SELECT last_value FROM "public"."quotations_suppliers_id_seq" UNION ALL SELECT last_value FROM "public"."account_closures_id_seq" UNION ALL SELECT last_value FROM "logging"."t_history_id_seq" UNION ALL SELECT last_value FROM "public"."abdomino_pelvic_ultrasounds_id_seq" UNION ALL SELECT last_value FROM "public"."acc_acccombination_id_seq" UNION ALL SELECT last_value FROM "public"."acc_accgroups_id_seq" UNION ALL SELECT last_value FROM "public"."acc_accholiday_id_seq" UNION ALL SELECT last_value FROM "public"."acc_accprivilege_id_seq" UNION ALL SELECT last_value FROM "public"."acc_accterminal_id_seq" UNION ALL SELECT last_value FROM "public"."acc_acctimezone_id_seq" UNION ALL SELECT last_value FROM "public"."accident_emergencies_id_seq" UNION ALL SELECT last_value FROM "public"."accident_emergency_details_id_seq" UNION ALL SELECT last_value FROM "public"."account_closures_approvals_id_seq" UNION ALL SELECT last_value FROM "public"."account_components_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."account_configurations_id_seq" UNION ALL SELECT last_value FROM "public"."account_group_types_id_seq" UNION ALL SELECT last_value FROM "public"."account_groups_id_seq" UNION ALL SELECT last_value FROM "public"."account_items_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."account_package_group_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."account_services_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."account_tds_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."accounts_tax_rules_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."accpac_batches_id_seq" UNION ALL SELECT last_value FROM "public"."accpac_customer_receipts_id_seq" UNION ALL SELECT last_value FROM "public"."acs_registry_reports_id_seq" UNION ALL SELECT last_value FROM "public"."action_group_partials_id_seq" UNION ALL SELECT last_value FROM "public"."action_groups_id_seq" UNION ALL SELECT last_value FROM "public"."action_groups_composite_partials_id_seq" UNION ALL SELECT last_value FROM "public"."action_groups_controller_actions_id_seq" UNION ALL SELECT last_value FROM "public"."action_groups_menu_contexts_id_seq" UNION ALL SELECT last_value FROM "public"."action_items_id_seq" UNION ALL SELECT last_value FROM "public"."active_in_patients_id_seq" UNION ALL SELECT last_value FROM "public"."active_problems_id_seq" UNION ALL SELECT last_value FROM "public"."actual_inv_transactions_id_seq" UNION ALL SELECT last_value FROM "public"."actual_monthly_tax_details_id_seq" UNION ALL SELECT last_value FROM "public"."add_and_update_targets_id_seq" UNION ALL SELECT last_value FROM "public"."addendum_procedure_notes_id_seq" UNION ALL SELECT last_value FROM "public"."additional_procedures_id_seq" UNION ALL SELECT last_value FROM "public"."address_details_id_seq" UNION ALL SELECT last_value FROM "public"."address_locations_id_seq" UNION ALL SELECT last_value FROM "public"."address_sub_locations_id_seq" UNION ALL SELECT last_value FROM "public"."admission_purposes_id_seq" UNION ALL SELECT last_value FROM "public"."adt_requests_id_seq" UNION ALL SELECT last_value FROM "public"."advancedetails_id_seq" UNION ALL SELECT last_value FROM "public"."advance_used_registers_id_seq" UNION ALL SELECT last_value FROM "public"."advance_visits_id_seq" UNION ALL SELECT last_value FROM "public"."advance_visits_bills_id_seq" UNION ALL SELECT last_value FROM "public"."advice_nonbillable_details_id_seq" UNION ALL SELECT last_value FROM "public"."advice_nonbillables_id_seq" UNION ALL SELECT last_value FROM "public"."ages_id_seq" UNION ALL SELECT last_value FROM "public"."ai_tmmt_test_map_mast_t_id_seq" UNION ALL SELECT last_value FROM "public"."aldrete_scores_id_seq" UNION ALL SELECT last_value FROM "public"."allergy_histories_id_seq" UNION ALL SELECT last_value FROM "public"."allowance_deduction_calc_details_id_seq" UNION ALL SELECT last_value FROM "public"."allowance_deduction_details_id_seq" UNION ALL SELECT last_value FROM "public"."allowance_deductions_id_seq" UNION ALL SELECT last_value FROM "public"."anaesthesia_axons_id_seq" UNION ALL SELECT last_value FROM "public"."anaesthetic_records_id_seq" UNION ALL SELECT last_value FROM "public"."anaesthetic_sheets_id_seq" UNION ALL SELECT last_value FROM "public"."anesthesia_types_id_seq" UNION ALL SELECT last_value FROM "public"."angiograms_id_seq" UNION ALL SELECT last_value FROM "public"."annual_diabetic_visits_id_seq" UNION ALL SELECT last_value FROM "public"."ant_order_set_details_id_seq" UNION ALL SELECT last_value FROM "public"."ante_order_set_details_id_seq" UNION ALL SELECT last_value FROM "public"."antenatal_check_up_records_id_seq" UNION ALL SELECT last_value FROM "public"."antenatal_checkup_records_id_seq" UNION ALL SELECT last_value FROM "public"."antenatal_ordersets1_id_seq" UNION ALL SELECT last_value FROM "public"."anthropometry_details_id_seq" UNION ALL SELECT last_value FROM "public"."antibiotic_drugs_id_seq" UNION ALL SELECT last_value FROM "public"."antordersets_id_seq" UNION ALL SELECT last_value FROM "public"."apacheis_id_seq" UNION ALL SELECT last_value FROM "public"."appointment_categories_id_seq" UNION ALL SELECT last_value FROM "public"."appointment_details_id_seq" UNION ALL SELECT last_value FROM "public"."appointment_purposes_id_seq" UNION ALL SELECT last_value FROM "public"."appointments_id_seq" UNION ALL SELECT last_value FROM "public"."appraisal_training_type_details_id_seq" UNION ALL SELECT last_value FROM "public"."approval_designations_id_seq" UNION ALL SELECT last_value FROM "public"."approval_details_id_seq" UNION ALL SELECT last_value FROM "public"."approval_functionalities_id_seq" UNION ALL SELECT last_value FROM "public"."approval_level_designations_id_seq" UNION ALL SELECT last_value FROM "public"."areas_id_seq" UNION ALL SELECT last_value FROM "public"."arterial_cvps_id_seq" UNION ALL SELECT last_value FROM "public"."assesmentof_dysfluencies_id_seq" UNION ALL SELECT last_value FROM "public"."assessment_by_paediatrician_nine_months_id_seq" UNION ALL SELECT last_value FROM "public"."assessment_by_paediatrician_three_four_months_id_seq" UNION ALL SELECT last_value FROM "public"."assessment_categories_id_seq" UNION ALL SELECT last_value FROM "public"."assessment_cerebral_palsies_id_seq" UNION ALL SELECT last_value FROM "public"."assessment_child_learning_difficultues_id_seq" UNION ALL SELECT last_value FROM "public"."assessment_language_developments_id_seq" UNION ALL SELECT last_value FROM "public"."assessment_protocols_id_seq" UNION ALL SELECT last_value FROM "public"."assessmentfor_articulation_disorders_id_seq" UNION ALL SELECT last_value FROM "public"."assessmentfor_cerebral_palsies_id_seq" UNION ALL SELECT last_value FROM "public"."assessmentfor_neurogenic_communications_id_seq" UNION ALL SELECT last_value FROM "public"."asset_account_mappings_id_seq" UNION ALL SELECT last_value FROM "public"."asset_components_id_seq" UNION ALL SELECT last_value FROM "public"."asset_consumble_details_id_seq" UNION ALL SELECT last_value FROM "public"."asset_depreciation_histories_id_seq" UNION ALL SELECT last_value FROM "public"."asset_depreciation_requests_id_seq" UNION ALL SELECT last_value FROM "public"."asset_insurence_details_id_seq" UNION ALL SELECT last_value FROM "public"."asset_locations_id_seq" UNION ALL SELECT last_value FROM "public"."asset_names_id_seq" UNION ALL SELECT last_value FROM "public"."asset_operators_id_seq" UNION ALL SELECT last_value FROM "public"."asset_preventive_maintenance_schedules_id_seq" UNION ALL SELECT last_value FROM "public"."asset_shutdown_histories_id_seq" UNION ALL SELECT last_value FROM "public"."asset_warranty_details_id_seq" UNION ALL SELECT last_value FROM "public"."assets_id_seq" UNION ALL SELECT last_value FROM "public"."associated_healthcare_institutions_id_seq" UNION ALL SELECT last_value FROM "public"."associated_persons_id_seq" UNION ALL SELECT last_value FROM "public"."asymptomatic_symptoms_id_seq" UNION ALL SELECT last_value FROM "public"."att_attcalclog_id_seq" UNION ALL SELECT last_value FROM "public"."att_attreportsetting_id_seq" UNION ALL SELECT last_value FROM "public"."att_attschedule_id_seq" UNION ALL SELECT last_value FROM "public"."att_attshift_id_seq" UNION ALL SELECT last_value FROM "public"."att_breaktime_id_seq" UNION ALL SELECT last_value FROM "public"."att_clientdetails_id_seq" UNION ALL SELECT last_value FROM "public"."att_departmentschedule_id_seq" UNION ALL SELECT last_value FROM "public"."att_deptattrule_id_seq" UNION ALL SELECT last_value FROM "public"."att_holiday_id_seq" UNION ALL SELECT last_value FROM "public"."att_leavecategory_id_seq" UNION ALL SELECT last_value FROM "public"."att_leaveschedule_id_seq" UNION ALL SELECT last_value FROM "public"."att_leavesettings_id_seq" UNION ALL SELECT last_value FROM "public"."att_outdooremployeeschedule_id_seq" UNION ALL SELECT last_value FROM "public"."att_outdoorscheduleplanner_id_seq" UNION ALL SELECT last_value FROM "public"."att_outdoortrack_id_seq" UNION ALL SELECT last_value FROM "public"."att_payloadmulpunchset_id_seq" UNION ALL SELECT last_value FROM "public"."att_reportparam_id_seq" UNION ALL SELECT last_value FROM "public"."att_shiftdetail_id_seq" UNION ALL SELECT last_value FROM "public"."att_tempschedule_id_seq" UNION ALL SELECT last_value FROM "public"."att_timeinterval_id_seq" UNION ALL SELECT last_value FROM "public"."att_timeinterval_break_time_id_seq" UNION ALL SELECT last_value FROM "public"."att_trainingcategory_id_seq" UNION ALL SELECT last_value FROM "public"."attendance_spoc_masters_id_seq" UNION ALL SELECT last_value FROM "public"."attendent_bed_rates_id_seq" UNION ALL SELECT last_value FROM "public"."audiology_case_histories_
15 min 0.5% 31 ms 29,425 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
11 min 0.4% 42 ms 16,307 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
11 min 0.4% 77 ms 8,229 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
10 min 0.3% 38 ms 15,318 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
8 min 0.3% 27 ms 16,907 erps1 · details
SELECT     "generic_names".* FROM       "generic_names"  WHERE     (status=$1 and healthcare_institution_id=$2) ORDER BY  lower(name)
6 min 0.2% 49 ms 7,557 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)
6 min 0.2% 30 ms 11,538 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
6 min 0.2% 70 ms 4,982 cims1 · details
SELECT     "pains".* FROM       "pains"  WHERE     (patient_id=$1)
6 min 0.2% 21 ms 16,442 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
6 min 0.2% 68 ms 4,982 cims1 · details
SELECT     "flaccs".* FROM       "flaccs"  WHERE     (patient_id=$1)
5 min 0.2% 45 ms 7,086 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
5 min 0.2% 54 ms 5,810 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
5 min 0.2% 46 ms 6,514 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