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

Duplicate Indexes

These indexes exist, but aren’t needed. Remove them for faster writes.

rails generate migration remove_unneeded_indexes

And paste

remove_index :product_product, name: "product_product_product_tmpl_id_index", column: :product_tmpl_id
Details
On product_product
product_product_product_tmpl_id_index (product_tmpl_id)
is covered by
product_product_product_tmpl_id_default_code_idx (product_tmpl_id, default_code)

Suggested Indexes

Add indexes to speed up queries.

rails generate migration add_suggested_indexes

And paste

commit_db_transaction
add_index :material_requisition, [:schedule_id], algorithm: :concurrently
add_index :material_requisition, [:state, :create_date], algorithm: :concurrently

Details
CREATE INDEX CONCURRENTLY ON material_requisition (schedule_id)
Rows: 55857
Row progression: 55857, 36

Row estimates
- schedule_id (=): 36
- create_date (sort): 1

Existing indexes
- id PRIMARY

to speed up

Total Time Average Time Calls
4 min < 0.1% 21 ms 11,290 odoo
SELECT "material_requisition".id FROM "material_requisition" WHERE ("material_requisition"."schedule_id" in ($1)) ORDER BY "material_requisition"."create_date" DESC

Details
CREATE INDEX CONCURRENTLY ON material_requisition (state, create_date)
Rows: 55857
Row progression: 55857, 13964, 0

Row estimates
- state (=): 13964
- create_date (sort): 1

Existing indexes
- id PRIMARY

to speed up

Total Time Average Time Calls
9 min < 0.1% 33 ms 16,025 odoo
SELECT "material_requisition".id FROM "material_requisition" WHERE ("material_requisition"."state" = $1) ORDER BY "material_requisition"."create_date" DESC

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
9 min < 0.1% 33 ms 16,025 odoo
SELECT "material_requisition".id FROM "material_requisition" WHERE ("material_requisition"."state" = $1) ORDER BY "material_requisition"."create_date" DESC
Details
CREATE INDEX CONCURRENTLY ON material_requisition (state, create_date)
Rows: 55857
Row progression: 55857, 13964, 0

Row estimates
- state (=): 13964
- create_date (sort): 1

Existing indexes
- id PRIMARY
7 min < 0.1% 30 ms 14,507 odoo
UPDATE "stock_move" SET "is_done"=$1,"write_uid"=$2,"write_date"=(now() at time zone $3) WHERE id IN ($4)
Covered by index on (id)
Rows: 6328394
Row progression: 6328394, 1

Row estimates
- id (=): 1

Existing indexes
- id PRIMARY
- company_id
- create_date
- created_production_id
- created_purchase_line_id
- date
- date_expected
- inventory_id, location_dest_id
- location_dest_id, created_purchase_line_id
- location_dest_id, state, product_id, date
- location_id
- name
- origin_returned_move_id
- picking_id, location_dest_id
- product_id, location_id, location_dest_id, company_id, state
- product_id, location_id, location_dest_id, state
- production_id, location_dest_id
- purchase_line_id
- raw_material_production_id, location_dest_id
- sale_line_id, location_dest_id
- scrapped
- state
7 min < 0.1% 849 ms 463 odoo
SELECT "material_requisition_line".id FROM "material_requisition_line" LEFT JOIN "res_partner" as "material_requisition_line__partner_id" ON ("material_requisition_line"."partner_id" = "material_requisition_line__partner_id"."id") LEFT JOIN "product_category" as "material_requisition_line__categ_id" ON ("material_requisition_line"."categ_id" = "material_requisition_line__categ_id"."id") LEFT JOIN "product_product" as "material_requisition_line__product_id" ON ("material_requisition_line"."product_id" = "material_requisition_line__product_id"."id") WHERE ("material_requisition_line"."requisition_id" in ($1)) ORDER BY "material_requisition_line__partner_id"."display_name" ,"material_requisition_line__categ_id"."parent_left" ,"material_requisition_line__product_id"."default_code" ,"material_requisition_line__product_id"."id"
6 min < 0.1% 308 ms 1,212 odoo
SELECT "production_schedule_line".id FROM "production_schedule_line" WHERE ("production_schedule_line"."production_ticket_id" IS NULL   AND  ("production_schedule_line"."to_skip" IS NULL or "production_schedule_line"."to_skip" = $1 )) ORDER BY "production_schedule_line"."id"
5 min < 0.1% 26 ms 10,271 odoo
INSERT INTO "mail_message" ("id", "res_id", "reply_to", "date", "parent_id", "message_type", "email_from", "model", "body", "record_name", "subtype_id", "subject", "author_id", "message_id", "no_auto_thread", "create_uid", "write_uid", "create_date", "write_date") VALUES(nextval($1), $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, (now() at time zone $18), (now() at time zone $19)) RETURNING id
4 min < 0.1% 21 ms 11,290 odoo
SELECT "material_requisition".id FROM "material_requisition" WHERE ("material_requisition"."schedule_id" in ($1)) ORDER BY "material_requisition"."create_date" DESC
Details
CREATE INDEX CONCURRENTLY ON material_requisition (schedule_id)
Rows: 55857
Row progression: 55857, 36

Row estimates
- schedule_id (=): 36
- create_date (sort): 1

Existing indexes
- id PRIMARY